gof23
種設計模式中建立型模式有
5種,分別是:
singleton
單件模式、
abstract factory
抽象工廠模式、
builder
生成器模式、
factory method
工廠方法模式、
prototype
原形模式。下面分別總結這幾種設計模式。
設計模式
gof的描述
我的理解
singleton
單件模式
保證乙個類僅有乙個例項,並提供乙個該例項全域性的訪問點
控制實體物件的數量
abstract factory
抽象工廠模式
提供乙個介面,讓該介面負責建立一系列
「相關或者相互依賴的物件
」,無需指定他們的具體類
解決乙個系列的物件變化的問題
builder
生成器模式
將乙個複雜物件的構建與其表示向分離,使得同樣的構建過程可以建立不同的表示
應對專案中一些複雜物件的建立工作。所謂
「複雜物件
」,是指:此物件中還含有其它的子物件
factory method
工廠方法模式
定義乙個用於建立物件的介面,讓子類決定例項化那個類。
factorymethod
使得乙個類的例項化延遲到子類
解決的是「某個物件」的建立工作,由於需求的變化,這個物件常常面臨著劇烈的變化,但是這個物件擁有的介面相對穩定。也就是說:枝節常常發生變化,但是枝節與主幹的介面相對穩定
prototype
原形模式
使用原型例項指定建立物件的種類,然後通過拷貝這些原型來建立新的物件
某些結構複雜的物件的建立工作;由於需求的變化,這些物件經常面臨著劇烈的變化,但是他們卻擁有比較穩定一致的介面
在學習的過程中,覺得從功能上看
abstract factory
模式和builder
模式容易混淆,
factory method
模式和prototype
模式不好區分。
singleton
模式沒什麼太大的困難。下面就來分析一下前四種模式。
一、abstract factory
模式和builder
模式:abstract factory
是應對一系列物件的建立的問題,正如前面文章中舉的例子,對於建立乙個汽車物件來說,
abstract factory
模式更關注一系列的物件的建立,或者說是汽車型別中的各個部分,如:
wheel
、engine
、body
等等型別的建立。換句話說關注點在這一系列物件上。
builder
是應對乙個複雜物件建立的問題,或者說是針對這個複雜物件中的子物件的建立的問題。以汽車的例子來說,我覺得比起
abstract factory
模式,builder
模式相對注重汽車型別(上面所說的「複雜物件」)本身以及其各個部分(
wheel
、engine
、body
等等)型別的建立。
builder
模式要求這個複雜的型別(汽車)中的各個子型別的結合部分相對穩定,用例子說明就是對於汽車來說,無論用什麼配件組裝,個個配件的組裝方式都一樣,有相對穩定的介面。對於這輛車你用什麼牌子的
wheel
、什麼牌子的
engine
可能變化會很大很頻繁。
二、factory method
模式和prototype
模式:開始我覺得這兩種模式從功能上講是一樣的(個人觀點),都是封裝了對物件的建立,只不過
prototype
模式是用
原型轉殖
進行拷貝來完成物件的建立,在這之中還應注意淺拷貝和深拷貝的區別。在向同事請教後有點明白。這兩種模式在應用場景上還是一定的區別的。
factory method
模式是重新建立乙個物件
prototype
模式是利用現有的物件進行轉殖,當兩個物件或多個物件雷同的時候,可以考慮用乙個已建立的物件去轉殖出其餘的物件。
以上是對建立型模式的總結,如有不對的觀點歡迎指正。
設計模式學習 建立型模式
近來看設計模式的一些內容,發現一些和自己認知有所不同 建立型模式的話,是最常用的模式,像singleton,factory,具體還有那種,就在看設計模式的過程中了解區分清楚的 建立型模式 1.factory method 2.abstract factory method 3.builder 4.p...
設計模式 建立型模式學習
設計模式就是針對某類特定問題的 設計經驗。復用成功的設計模式,可以減低開發成本和週期 提高復用 適用拓展和可維護性。實現乙個類只有乙個例項,並提供全域性訪問。複製 public class singleton private volatile static singleton singleton n...
建立型模式學習總結 設計模式學習筆記
一 建立型模式 1 建立型模式抽象了例項化的過程 將物件的建立,組合,表示獨立於系統。乙個類建立型模式使用繼承來改變被例項化的物件,乙個物件的建立型模式是將例項化委託給另乙個物件,以避免硬編碼 hard coding 帶來了的不可擴充套件和不能靈活應對變化,而來降低物件之間關係的重新更改或者組合或者...