现在的位置: 首页 > 综合 > 正文

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

2013年08月12日 ⁄ 综合 ⁄ 共 5431字 ⁄ 字号 评论关闭

通过 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> ):

 

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

 

By CodingMouse

2010年1月11日

 

 

 

抱歉!评论已关闭.