设计模式在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方式,而不必修改代码,只要直接修改配置文件就可以。

责编:豆豆技术应用

正在加载评论...