日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

設計模式學習筆記(十四)——創(chuàng)建型模式總結(jié)

 skywood 2007-08-06

       GoF23種設計模式中創(chuàng)建型模式有5種,分別是:Singleton單件模式、Abstract Factory抽象工廠模式、Builder生成器模式、Factory Method工廠方法模式、Prototype原形模式。下面分別總結(jié)這幾種設計模式。

 

設計模式

GoF的描述

我的理解

Singleton單件模式

保證一個類僅有一個實例,并提供一個該實例全局的訪問點

控制實體對象的數(shù)量

Abstract Factory抽象工廠模式

提供一個接口,讓該接口負責創(chuàng)建一系列相關或者相互依賴的對象,無需指定他們的具體類

解決一個系列的對象變化的問題

Builder生成器模式

將一個復雜對象的構(gòu)建與其表示向分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

應對項目中一些復雜對象的創(chuàng)建工作。所謂復雜對象,是指:此對象中還含有其它的子對象

Factory Method工廠方法模式

定義一個用于創(chuàng)建對象的接口,讓子類決定實例化那個類。FactoryMethod使得一個類的實例化延遲到子類

解決的是“某個對象”的創(chuàng)建工作,由于需求的變化,這個對象常常面臨著劇烈的變化,但是這個對象擁有的接口相對穩(wěn)定。也就是說:枝節(jié)常常發(fā)生變化,但是枝節(jié)與主干的接口相對穩(wěn)定

Prototype原形模式

使用原型實例指定創(chuàng)建對象的種類,然后通過拷貝這些原型來創(chuàng)建新的對象

某些結(jié)構(gòu)復雜的對象的創(chuàng)建工作;由于需求的變化,這些對象經(jīng)常面臨著劇烈的變化,但是他們卻擁有比較穩(wěn)定一致的接口

      

在學習的過程中,覺得從功能上看Abstract Factory模式和Builder模式容易混淆,Factory Method模式和Prototype模式不好區(qū)分。Singleton模式?jīng)]什么太大的困難。下面就來分析一下前四種模式。

一、Abstract Factory模式和Builder模式:

Abstract Factory是應對一系列對象的創(chuàng)建的問題,正如前面文章中舉的例子,對于創(chuàng)建一個汽車對象來說,Abstract Factory模式更關注一系列的對象的創(chuàng)建,或者說是汽車類型中的各個部分,如:Wheel、Engine、Body等等類型的創(chuàng)建。換句話說關注點在這一系列對象上。

Builder是應對一個復雜對象創(chuàng)建的問題,或者說是針對這個復雜對象中的子對象的創(chuàng)建的問題。以汽車的例子來說,我覺得比起Abstract Factory模式,Builder模式相對注重汽車類型(上面所說的“復雜對象”)本身以及其各個部分(Wheel、Engine、Body等等)類型的創(chuàng)建。Builder模式要求這個復雜的類型(汽車)中的各個子類型的結(jié)合部分相對穩(wěn)定,用例子說明就是對于汽車來說,無論用什么配件組裝,個個配件的組裝方式都一樣,有相對穩(wěn)定的接口。對于這輛車你用什么牌子的Wheel、什么牌子的Engine可能變化會很大很頻繁。

二、Factory Method模式和Prototype模式:

開始我覺得這兩種模式從功能上講是一樣的(個人觀點),都是封裝了對對象的創(chuàng)建,只不過Prototype模式是用原型克隆進行拷貝來完成對象的創(chuàng)建,在這之中還應注意淺拷貝和深拷貝的區(qū)別。在向同事請教后有點明白。這兩種模式在應用場景上還是一定的區(qū)別的。

Factory Method模式是重新創(chuàng)建一個對象

Prototype模式是利用現(xiàn)有的對象進行克隆,當兩個對象或多個對象雷同的時候,可以考慮用一個已創(chuàng)建的對象去克隆出其余的對象。
   以上是對創(chuàng)建型模式的總結(jié),如有不對的觀點歡迎指正。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多