设计模式在EJB中的应用
http://tech.ddvip.com 2006年07月17日 社区交流
本文详细介绍设计模式在EJB中的应用
商业逻辑抽象类 (CatalogEJB)
抽象的商业逻辑操作.
对DAOImplementor调用.
不关心是具体什么数据源被使用(无论是Oracle还是JDBC还是XML).
DAO(Data Access Object) (CatalogDAO)
对数据源的抽象操作行为.
提供了非常方便访问和维护管理数据的API结构.
DAOImplementor (CatalogDAOImpl 有可能有CatalogDAOImplSybase CatalogDAOImplMysql 等)
实现具体的DAO接口内容.
使用Adapter模式,将特定的数据源驱动接口适配到DAO接口中去
数据源 ( Oracle, or Sybase database via JDBC API)
提供访问具体数据库的驱动接口,如包括连接池等.
在使用数据源驱动接口时,需要使用Adapter模式,Adapter模式将两个不相关的类纠合在一起使用,Adapter模式实际是使用组合(composition)和继承(inheritance)两种方式再生类,在著名的"think in Java"的"类再生"专门提到这两个方式.
很显然,如果你对Bridge模式和Adapter模式熟悉,那么对宠物店中的Catalog理解就会非常快,同样,在宠物店其他部分如订单 用户注册 等都能迅速理解。
Factory模式和Singleton模式该模式类似new,是用来创建对象的,使用Factory模式是为了实现面向对象的基本原则.封装(Encapsulation)和分派(Delegation);将创建对象与使用对象进行分工。因此在平时开发过程中,尽量使用Factory模式创建对象。
本例CatalogEJB中是使用Factory模式获得一个DAO的具体实例对象,见上面CatalogEJB代码中注释。我们看看CatalogDAOFactory的代码:
public class CatalogDAOFactory {
public static CatalogDAO getDAO() throws CatalogDAOSysException {
CatalogDAO catDao = null;
try {
InitialContext ic = new InitialContext();
String className = (String) ic.lookup(JNDINames.CATALOG_DAO_CLASS);
catDao = (CatalogDAO) Class.forName(className).newInstance();
} catch (NamingException ne) {
...
}
return catDao;
}在CatalogDAOFactory可以依据系统的配置文件,动态获得DAO的方法,之所以采取动态方式,当然便于用户自己增加自己的DAO方式,而不必修改代码,只要直接修改配置文件就可以。
责编:豆豆技术应用