A Cooly Weblog

             ::  ::  ::  ::  :: 管理

          簡單工廠模式Simple Factory

          Posted on 2007-02-27 23:32 acooly 閱讀(389) 評論(0)  編輯  收藏 所屬分類: Java開發設計模式

          ??????簡單工廠模式也叫靜態工廠方法模式(Static Factory Method),是由一個工廠對象隱藏并決定產品類的具體創建的一種創建模式。是工廠方法模式的一種特例。

          什么時候使用?
          1、創建一類有公共接口或父類的對象,并要求隱藏具體實現。
          2、隱藏子類的創建,提高擴展性。

          優點:隱藏具體產品的創建,客戶端獨立的創建產品而不用關心具體的創建過程,并在引入新的產品類時不用修改客戶調用類。
          缺點:所用產品的創建集中到factory上,成為系統的中心,一旦factory出現問題整個系統崩潰。

          標準簡單工廠模式

          標準簡單工廠模式

          工廠類

          package ?pattern.simplefactory;

          /**
          ?*?簡單工廠模式-工廠類
          ?
          @author ?ZhangPu
          ?
          */


          public ? class ?ProductFactory? {
          ????
          /**
          ?????*?簡單工廠方法:通過類全路徑創建產品
          ?????*?
          @param ?className
          ?????*?
          @return
          ?????
          */

          ????
          public ? static ?Product?factory(String?className) {
          ????????Product?product?
          = ? null ;
          ????????
          try ? {
          ????????????product?
          = ?(Product)Class.forName(className).newInstance();
          ????????}
          ? catch ?(Exception?e)? {
          ????????????
          throw ? new ?RuntimeException(e);
          ????????}

          ????????
          return ?product;
          ????}


          }


          抽象產品接口
          package?pattern.simplefactory;

          /**
          ?*?產品接口
          ?
          */

          public?interface?Product?{
          ????
          public?String?getName();????
          }


          具體產品類
          package?pattern.simplefactory;

          /**
          ?*?普通產品
          ?
          @author?ZhangPu
          ?
          */


          public?class?ConcreteProduct?implements?Product?{
          ????
          private?String?name?=?"普通產品";

          ????
          public?String?getName()?{
          ????????
          return?name;
          ????}

          }

          客戶端類
          package?pattern.simplefactory;

          /**
          ?*?client?class
          ?
          @author?ZhangPu
          ?
          */


          public?class?Client?{
          ????
          public?static?void?main(String[]?args)?{
          ????????Product?product?
          =?ProductFactory.factory("pattern.simplefactory.ConcreteProduct");
          ????????System.out.println(product.getName());
          ????}

          }


          合并抽象產品和產品的簡單工廠模式



          合并產品和工廠的模式



          請注意與單例模式的區別:
          1.單例模式構造函數是私有的,不允許外界創建。
          2.單例模式只有一個實例。

          主站蜘蛛池模板: 娱乐| 沁阳市| 洪洞县| 通辽市| 威海市| 玉门市| 宜阳县| 富阳市| 信阳市| 清流县| 长白| 阜平县| 济宁市| 如皋市| 静安区| 张家港市| 绥宁县| 渭源县| 从化市| 雅安市| 湛江市| 银川市| 乌恰县| 永顺县| 浏阳市| 西和县| 平果县| 句容市| 镇坪县| 通城县| 新民市| 鲁甸县| 兴国县| 台北市| 民县| 巨鹿县| 峡江县| 当阳市| 特克斯县| 铁力市| 商水县|