日期:2014-05-20  浏览次数:20649 次

有必要给初学者解决下“月经题”,散分!
都是关于面向对象的,http://bbs.csdn.net/topics/390528973   http://bbs.csdn.net/topics/390536618
花了点时间给两个楼主解答,同时希望初学者少走弯路,不要在为“面向对象”而面向对象,要提前理解JavaBean+DAO的模式(简单的说,就是把数据和方法完全分离;如果实在还不理解,就回忆下C语言的"结构体+函数式"编程的思想,面向过程你能理解吧,换了个更简单的面向对象怎么就纠结了?),简化今后的编程,加快JavaSE学习的速度。
为什么现在有泛型,为什么有反射,为什么有纯POJO?这些思想就是要让你的“数据”和“操作”完全分离;类似于“冰箱具有--开打、关闭方法,汽车具有--行驶、刹车方法”的代码绝对绝对不能再出现在Pojo当中了!
以后谁再写以下这种2B代码你们项目经理跟你没完

package beantest.bean;
 
/**
 *冰箱
 *
 */
public class Fridge {
private String name;
 
public String getName() {
    return name;
}
 
public void setName(String name) {
    this.name = name;
}
 
/**
 * 冰箱具有打开的行为
 */
public void open(){
    System.out.println("打开"+name);
}
 
/**
 * 冰箱具有关闭的行为
 */
public void close(){
    System.out.println("关闭"+name);
}
}

企业级的设计思路有MVC以及SSH框架的单例、代理、Aop等等,
但面向对象基本上只有Dao+JavaBean,没有其他;连继承都很少,纵观马士兵、张孝祥、韩顺平的SSH视频,只找到两个:HibernateTemplate、ActionSupport而已;所以,如果初学者再过分的纠结于所谓的抽象、封装、继承、多态,只会耽误学习Java的进度!
比如一个帖子问到:
老王和老李是夫妻。老王是一名大学教授,老李是一名会计,他们的父母都健在。老王和老李有一个儿子,15岁了,在上中学。老王有时候去打太极拳,老李有时候去兼职讲课。用OO的思想描述他们的关系
 

可以这样解答,诸位可能有更加优美的代码但设计思路在20年之内是不会变的
下面是项目的包结构:
db里边是数据库(我们现在用List代替真正的数据库)
bean包里边是实体(习惯上称为JavaBean、POJO、Entity等等)
dao包里边是增删改查的类(对一个数据的基本操作就是CRUD)
logic包是业务逻辑层(如:判断两人是否是夫妻,判断父母是否健在等等)
util包用于存放:数据字典以及一些常用的正则、IO、日期的工具类


package beantest.bean;
 
/**
 *爱好
 *
 */
public class Hobby {
    /**
     * 主键--在数据库中的下标
     */
    private int id;
/**
 * 名称
 */
private String name;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;