设计模式在EJB中的应用

http://tech.ddvip.com   2006年07月17日    社区交流

本文详细介绍设计模式在EJB中的应用

  如果在这里只需要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;
}
}

  那么在CatalogEJB的调用从

  dao = CatalogDAOFactory.getDAO();

  要改为

  dao = CatalogDAOFactory.getIntance();

  Facade模式

  在EJB应用中,有两个端点,这一端是用户端,另外一端是EJB,通常在这两个端点间会增加一层,用来松散两个端点之间的耦合,比如在宠物店例子中,考虑到不同身份的用户有不同的操作流程,比如顾客注册进入后,需要浏览目录,下订单,而商店管理者进入后需要确认或者否定订单,或者检查库存。这些功能需要借助Session bean和Entity bean完成。

  但是如果用户端直接和这些bean互动,会有以下问题:

  1. 用户端必须注意和这些beans的所有有联系或互动的事情,无法阻止用户端可能不恰当的使用这些beans.

  2.如果EJB的API改动,那么用户端的一些代码也要修改。无疑扩展性很差。

责编:豆豆技术应用

正在加载评论...