在分层设计的时候,一般都不会省略掉DAO这层。泛型在JAVA1.5开始出现,它会使DAO的实现变得更简更美。
比如有实体对象教师(Teacher)与学生(Student),我们可以抽象出教师与学生的共性,他们都有编号、姓名、性别,就可以写个Person基类。

public class Person ...{
private Long id;
private String name;
private String gender;
//下面是setter和getter方法,略去
}教师类和学生类就可以扩展Person类,添加如工资或成绩等属性。那么DAO类是不是也用到继承呢?因为DAO类一般是查找增加删除更新这些动作,具体类有各自的业务逻辑操作,确实应该抽象出来。
//T是实体类型,K为主键类型,比如 Long 或 Integer
public interface IDao<T extends Person, K> ...{
public void save(T obj);
public void update(T obj);
public void delete(T obj);
public T load(K id);
}比如操作学生类的DAO类(StudentDao),示例代码如下:

public class StudentDao implements IDao<Student, Long> ...{

public void save(Student student) ...{
//这里是实现的具体操作
}

public void update(Student student) ...{
//这里是实现的具体操作
}

public void delete(Student student) ...{
//这里是实现的具体操作
}

public Student load(Long id) ...{
//这里是实现的具体操作
}
//其它业务方法

public int getStudentCount() ...{
//......
}
//......
}这样是不是很简很美呀?如果说不是,那看看没有使用泛型时是多么糟糕啊。由于真的很糟糕,我都不想写出来了。总之是用Object类型,然后强制转换成其它类型。
虽然JAVA的泛型来得比较迟,但是用处还是不错的。
276

被折叠的 条评论
为什么被折叠?



