通过 DAOFactory 的泛型写法来演示Java泛型的特殊用法

来源:互联网 发布:ee44ee最新域名 编辑:程序博客网 时间:2024/06/14 00:42

通过 DAOFactory 的泛型写法来演示Java泛型的特殊用法

 

小型项目中常常都没有用三方持久化框架,而大都是用公司或自行依据DAO模式封装的一些组件来完成数据库持久化动作,并且,通常为了更具可扩展性,常常使用抽象工厂模式来解耦合。

 

一、先看代码

1、简单工厂代码

 

2、抽象工厂代码

 

 

3、客户端代码

 

二、然后说明

 

1、简单工厂代码中使用反射机制构建外部指定的实现类来创建接口 IGeneralDAO 和 IGenericsDAO 的实例。这样以来,我们可以将工厂制造的产品类型放到外部来配置以降低耦合度。其中,有两个抽象方法实现,方法签名为 public IGeneralDAO buildGeneralDAO() 的这个方法没有使用泛型机制,而方法签名为 public IGenericsDAO<T> buildGenericsDAO() 的这个方法则使用了泛型机制。

 

2、抽象工厂代码中名为 newInstance 的静态方法使用了泛型机制。请注意泛型的写法。

 

3、客户端代码中则演示了用相同的抽象工厂,如何构建泛型和非泛型的方法。需要注意的是:

与下面这种写法是不一样的(这段代码无法通过编译,原因在于这时AbstractDAOFactory.newInstance().buildGenericsDAO()返回的是IGenericsDAO<Serializable> 类型,而非IGenericsDAO<AccountPOJO> ):

 

怎么样?感觉类似的写法,效果却大不相同。慢慢体会吧!