通过 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日