国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

設計模式在EJB中的應用(3)

2019-11-18 13:46:32
字體:
來源:轉載
供稿:網友

  設計模式在EJB中的應用(3)

   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;

  }
}

  那么在CatalogEJB的調用從
   dao = CatalogDAOFactory.getDAO();

   要改為
   dao = CatalogDAOFactory.getIntance();
(未完待續)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河北区| 乌兰浩特市| 陈巴尔虎旗| 锡林郭勒盟| 广灵县| 介休市| 且末县| 临泽县| 新兴县| 思茅市| 田林县| 康平县| 黄陵县| 汝州市| 山阳县| 宁安市| 开封市| 南木林县| 榆社县| 东兴市| 文山县| 肥乡县| 呼和浩特市| 驻马店市| 衡阳县| 宜昌市| 若羌县| 宁乡县| 麻城市| 苍山县| 仪征市| 古田县| 高雄市| 金堂县| 胶南市| 万山特区| 泽库县| 舟山市| 福州市| 山东省| 连江县|