GeekBand 設(shè)計模式 筆記&心得 第二周(1)設(shè)計模式

“對象創(chuàng)建”模式:

通過“對象創(chuàng)建”模式繞開new,來避免對象創(chuàng)建(new)過程中所導(dǎo)致的緊耦合(依賴具體類),從而支持對象創(chuàng)建的穩(wěn)定。它是接口抽象之后的第一步工作。

典型模式:

Factory Method

Abstract Factory

Prototype

Builder

Factory Method工廠方法:

定義:定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類,F(xiàn)actory Method使得一個類的實例化延遲(目的:解耦 ;手段:虛函數(shù))到子類

動機:繞開需求的變化而使抽象的變化。

要點:通過Factory Method方法將修改轉(zhuǎn)為擴展的策略,將緊耦合的關(guān)系變?yōu)樗神詈系年P(guān)系。

Abstract Factory抽象工廠:

動機:在軟件系統(tǒng)中常常面臨著相互依賴的關(guān)系。提供一種“封裝機制”來避免多系列具體對象創(chuàng)建工作的緊耦合。

定義:提供一個接口,讓該接口負(fù)責(zé)創(chuàng)建一系列“相關(guān)或者互相依賴的對象”,無需指定它們具體的類。

總結(jié):在應(yīng)對“多系列對象構(gòu)建”的需求變化的時候使用Abstract Factory。

Prototype原型模式:

向客戶程序(抽象)隔離出“易變的程序”(實現(xiàn)),從而使得“依賴這些易變對象的客戶程序”不隨需求的改變而改變。

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

總結(jié):同樣用于隔離類對象的使用者和具體類型之間的關(guān)系。要求這些易變類擁有“穩(wěn)定的接口”

Builder構(gòu)建器:

動機:在軟件系統(tǒng)中,有時面臨著“一個復(fù)雜對象”的創(chuàng)建工作,其通常由各個部分的子對象用一定的算法構(gòu)成。但由于需求的變化,這個復(fù)雜的對象的各個部分經(jīng)常面臨著劇烈的變化,但是將他們組合在一起的算法相對穩(wěn)定。

定義:將一個復(fù)雜對象的創(chuàng)建與其表示相分離,使得同樣的構(gòu)建過程(穩(wěn)定)可以創(chuàng)建不同的表示(變化)

總結(jié):主要用于“分步驟構(gòu)建一個復(fù)雜的對象”。在這其中“分步驟”是一個穩(wěn)定的算法,而復(fù)雜對象的各個部分則經(jīng)常變化。


"接口隔離"模式:

在組件構(gòu)建過程中,某些接口直接的依賴常常會帶來許多問題,甚至根本無法實現(xiàn)。采用添加一層間接(穩(wěn)定)接口,來隔離本來互相緊密關(guān)聯(lián)的接口是一種常見方案。

典型模式:

Facade

Proxy

Adapter

Mediator

Facade門面模式:

動機:客戶組件和子系統(tǒng)之間耦合過度

定義:為子系統(tǒng)中的一組接口提供一個一致(穩(wěn)定)的界面,F(xiàn)acade模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用(復(fù)用)。

總結(jié):簡化了組件系統(tǒng)的接口,達到了解耦的效果。

Mediator:中介者

動機:軟件構(gòu)建過程中,經(jīng)常出現(xiàn)多個對象互相關(guān)聯(lián)交互的情況,對象之間常常會維持一種復(fù)雜的引用關(guān)系,如果遇到一些需求更改,這種直接引用關(guān)系將面臨不斷的變化。所以可以使用”中介對象“管理對象間的關(guān)聯(lián)關(guān)系。

很像Facade模式。

定義:用一個中介對象來封裝(封裝變化)一系列的對象交互。中介者使各對象不需要顯式的相互引用(編譯時依賴-》運行時依賴),從而使其耦合松散(管理變化),而且可以獨立地改變它們之間的交互。

總結(jié):使用中介解耦,抵御了可能的變化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容