設計模式讀書筆記(2)

2021-03-31 08:56:59 字數 1092 閱讀 5991

builder

生成器模式

名稱:也叫建造模式、生成器模式

問題:

通常產品是由多個零件組成的,不同的產品,組成零件不一樣,組裝方式也不一樣。假設乙個產品,由

2部分組成(至於如何組成,可能隨著技術發展,會不一樣),另外的產品,有

3個部分組成,我們需要建立這些產品,如何做到完美實現呢?

解決:

這樣,我們作如下設計:

設計乙個抽象的建造者

builder

介面,規範產品的組成部分建造:定義

buildpart1()

和buildpart2()

、buildpart3

方法。

具體的實現者

concreate builder

(實現builder

介面)在外部請求下建造產品。 導演

director

類同客戶端打交道,將建立產品的請求劃分為

part1/part2

的請求,再將這些請求委派給具體的實現者。 產品

product

是需要建立的物件,但是可以有多個。每乙個產品由於不一樣,所以必須(一般)由乙個具體的實現者來實現具體細節。

效果:

這樣,對於客戶來講,完全同產品的多樣性和複雜性無關了,僅需要同導演類物件打交道,通過導演類例項來實現具體的產品建立。而導演類是通過

builder

介面來實現產品建立的。

圖:

舉例說明:

女媧造人,人(產品

product

)由靈魂、四肢、感官等多

70多個部件(

part1…part70

)組成,女媧(建造者

builder

)命令諸神實現各個部分,最後通過

getresult

方法返回乙個產品—人。

如果早原始人,那可能以上就夠了,但是如果造現代人,還有容貌肯定不同、思想也不單純(產品組成細節不同了),但還是可以由

70多個部分組成,那麼需要建造者具體實現時候不一樣(構造靈魂時候,現代人跟古代人肯定不一樣),但同樣需要構造

70多個部分(如果某一部分不需要,僅僅返回空即可)

設計模式讀書筆記

設計模式 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞。對於擴充套件是開放的,對於更改是封閉的。無論模組是多麼的 封閉 都會...

大話設計模式讀書筆記2 策略模式

策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類直接的耦合。uml 圖 根據 大話設計模式 第二章 商場 這個案例 來簡單的記錄一下策略模式的使用方式 現金收費抽象類 publi...

《大話設計模式》讀書筆記2 策略模式

策略模式 strategy 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式結構圖 策略模式實現 abstract class strategy class concrestrategya strategy class concre...