Roger Tu

          A simple boy living a simple life in every simple day...

             ::  :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            7 隨筆 :: 0 文章 :: 19 評論 :: 0 Trackbacks

          1 ???????? Creational Patterns

          將對象的使用與對象的創建分開。對象的使用者不負責創建對象,只需知道如何獲取需

          要的對象。這樣,當被使用對象的創建過程需要變更或擴展時,對象的使用者無須變動,只要對專門負責創建該對象的對象工廠做必要的變更或擴展即可。

          1.1 ??? The Factory Pattern

          1.1.1 ?? 基本類圖

          o_factory.GIF

          1.1.2 ?? 分析

          BasicProduct 有新的子產品 ExProduct3 要應用到系統時, Factory createProduct()

          需要簡單修改,增加一個“ else if ”分支,沒有完全實現“對擴展開放,對修改封閉”。但當明確產品就是有限的幾種時,仍是有效且常用的。

          ??????

          1.2 ??? The Abstract Factory Pattern

          1.2.1 ?? 基本類圖

          o_abstract_factory.GIF

          1.2.2 ?? 分析

          BasicProduct 有新的子類 ExProduct3 要應用到系統時,新建一個對應的擴展自

          BasicFactory ExFactory3 即可,現有類無需修改,實現了“對擴展開放,對修改封閉”。

          1.3 ??? The Singleton Pattern

          控制系統最多存在某個類的一個實例。很容易將 Singleton Pattern 擴展為控制系統只能

          創建某個類的有限個實例的情形。系統中大部分管理服務對象都是單實例的。例如,系統存在多個用戶實例,但只存在一個用戶管理者對象。

          1.3.1 ?? 常用實現方式

          public class Singleton {

          ??? private static Singleton instance = null ;

          ???

          ??? private Singleton() {}; // 控制外部不能自行創建 Sigleton 實例

          ???

          ??? public static Singleton getInstance() {

          ?????? if ( null == instance ) {

          ?????????? instance = new Singleton();

          ?????? }

          ?????? return instance ;

          ??? }

          }

          ?

          1.4 ??? The Builder Pattern

          1.4.1 ?? 基本類圖

          o_builder.GIF

          1.4.2 ?? 分析

          當一個產品( Product )由多個部分( Part1 Part2 Partn )組成,而各個部分又有

          不同的構造方式時。將產品各部分的構造和產品的組裝分離,就是 Builder Pattern Builder 是對產品各部分構造的抽象,而 Director 負責使用指定的 Builder 組裝產品。這樣,當系統有新的產品各部分構造方式需要加入時,只需實現繼承自 Builder ConcreteBuilder3 即可,系統其他類無需修改,實現了“對擴展開放,對修改關閉”。

          1.5 ??? The Prototype Pattern

          給定一個對象實例 A ,得到一個另一個對象實例 B B 的類型與 A 同, B 的內容與 A

          相同。常稱 B A 的克隆或副本。

          ?????? Java 對象模型直接支持 Prototype Pattern ,因為 Java 自帶克隆機制。關于 Java 克隆機制,見隨筆 http://www.aygfsteel.com/RogerTu/archive/2007/03/18/104532.html
          posted on 2007-03-23 00:49 RogerTu 閱讀(1331) 評論(0)  編輯  收藏 所屬分類: Programming Thought

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 宝坻区| 宁夏| 乡城县| 鞍山市| 太仓市| 顺义区| 新安县| 临安市| 德州市| 鹤庆县| 天祝| 留坝县| 华宁县| 石渠县| 特克斯县| 琼中| 福贡县| 上蔡县| 长兴县| 搜索| 江达县| 岳阳市| 隆回县| 新河县| 梁河县| 通化县| 建水县| 莱州市| 弥勒县| 庄河市| 武陟县| 阿图什市| 济阳县| 剑河县| 崇文区| 桦川县| 鱼台县| 尼木县| 龙州县| 自贡市| 平昌县|