快速业务通道

设计模式在EJB中的应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
   rs.getString(3));        }        rs.close();        ps.close(); c.close();        return ret;      }      catch (SQLException se) {        throw new CatalogDAOSysException("SQLException: "        + se.getMessage());      }      .... }

设计模式在EJB中的应用(3)

时间:2011-01-16

Bridge模式参与者总结如下:

商业逻辑抽象类 (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方式,而不必修改代码,只要直接修改配置文件就可以。

如果在这里只需要CatalogDAOFactory产生一个实例,可以采取Singleton模式,Singleton的目的是控制类实例对象的创建,并且允许整个程序只在一点对它进行访问。Singleton本身类只能创建一个,是单线程。

public class CatalogDAOFactory {    private static CatalogDAO catDao = null; public static CatalogDAO getIntance(){      if (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; } }

设计模式在EJB中的应用(4)

时间:2011-01-16

那么在CatalogEJB的调用从

dao = CatalogDAOFa

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号