Roger Tu

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

             ::  :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            7 隨筆 :: 0 文章 :: 19 評(píng)論 :: 0 Trackbacks

          1 ???????? Creational Patterns

          將對(duì)象的使用與對(duì)象的創(chuàng)建分開。對(duì)象的使用者不負(fù)責(zé)創(chuàng)建對(duì)象,只需知道如何獲取需

          要的對(duì)象。這樣,當(dāng)被使用對(duì)象的創(chuàng)建過程需要變更或擴(kuò)展時(shí),對(duì)象的使用者無須變動(dòng),只要對(duì)專門負(fù)責(zé)創(chuàng)建該對(duì)象的對(duì)象工廠做必要的變更或擴(kuò)展即可。

          1.1 ??? The Factory Pattern

          1.1.1 ?? 基本類圖

          o_factory.GIF

          1.1.2 ?? 分析

          當(dāng) BasicProduct 有新的子產(chǎn)品 ExProduct3 要應(yīng)用到系統(tǒng)時(shí), Factory createProduct()

          需要簡(jiǎn)單修改,增加一個(gè)“ else if ”分支,沒有完全實(shí)現(xiàn)“對(duì)擴(kuò)展開放,對(duì)修改封閉”。但當(dāng)明確產(chǎn)品就是有限的幾種時(shí),仍是有效且常用的。

          ??????

          1.2 ??? The Abstract Factory Pattern

          1.2.1 ?? 基本類圖

          o_abstract_factory.GIF

          1.2.2 ?? 分析

          當(dāng) BasicProduct 有新的子類 ExProduct3 要應(yīng)用到系統(tǒng)時(shí),新建一個(gè)對(duì)應(yīng)的擴(kuò)展自

          BasicFactory ExFactory3 即可,現(xiàn)有類無需修改,實(shí)現(xiàn)了“對(duì)擴(kuò)展開放,對(duì)修改封閉”。

          1.3 ??? The Singleton Pattern

          控制系統(tǒng)最多存在某個(gè)類的一個(gè)實(shí)例。很容易將 Singleton Pattern 擴(kuò)展為控制系統(tǒng)只能

          創(chuàng)建某個(gè)類的有限個(gè)實(shí)例的情形。系統(tǒng)中大部分管理服務(wù)對(duì)象都是單實(shí)例的。例如,系統(tǒng)存在多個(gè)用戶實(shí)例,但只存在一個(gè)用戶管理者對(duì)象。

          1.3.1 ?? 常用實(shí)現(xiàn)方式

          public class Singleton {

          ??? private static Singleton instance = null ;

          ???

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

          ???

          ??? 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 ?? 分析

          當(dāng)一個(gè)產(chǎn)品( Product )由多個(gè)部分( Part1 Part2 Partn )組成,而各個(gè)部分又有

          不同的構(gòu)造方式時(shí)。將產(chǎn)品各部分的構(gòu)造和產(chǎn)品的組裝分離,就是 Builder Pattern Builder 是對(duì)產(chǎn)品各部分構(gòu)造的抽象,而 Director 負(fù)責(zé)使用指定的 Builder 組裝產(chǎn)品。這樣,當(dāng)系統(tǒng)有新的產(chǎn)品各部分構(gòu)造方式需要加入時(shí),只需實(shí)現(xiàn)繼承自 Builder ConcreteBuilder3 即可,系統(tǒng)其他類無需修改,實(shí)現(xiàn)了“對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉”。

          1.5 ??? The Prototype Pattern

          給定一個(gè)對(duì)象實(shí)例 A ,得到一個(gè)另一個(gè)對(duì)象實(shí)例 B B 的類型與 A 同, B 的內(nèi)容與 A

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

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

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 天全县| 河津市| 南汇区| 镇巴县| 阳西县| 遂宁市| 尼勒克县| 昂仁县| 乌兰浩特市| 祁阳县| 阜南县| 安康市| 屏边| 蒙城县| 老河口市| 临沧市| 安多县| 新兴县| 泸西县| 内乡县| 阿城市| 沁水县| 哈巴河县| 武邑县| 井研县| 三门县| 买车| 宜宾县| 鹤岗市| 华蓥市| 涿鹿县| 县级市| 友谊县| 镇康县| 当雄县| 穆棱市| 贵溪市| 奎屯市| 南涧| 南和县| 黄浦区|