橋接模式與裝飾者模式區別:
橋接模式類圖

裝飾者模式類圖

1、定義:
(1)橋接模式:將抽象部分與它的實作部分分離,使它們都可以獨立地變化
(2)裝飾者模式:動態地給一個物件增加一些額外的職責,就增加物件功能來說,裝飾模式比生成子類實作更為靈活
2、“獨立部分”不同:
(1)橋接模式:抽象類和實作介面類是相互獨立的,降低了類之間的耦合度
(2)裝飾者模式:具體構件以及抽象裝飾類都繼承自抽象構件,所以仍是緊耦合
3、角度不同:
(1)橋接模式:物件自身有沿著多個維度變化的趨勢, 本身不穩定
(2)裝飾者模式:物件自身比較穩定, 只是為了增加新功能或增強原功能
4、適用環境:
(1)橋接模式:
A、當一個類存在兩個獨立變化的維度,且這兩個維度都需要進行擴展時
B、當一個系統不希望使用繼承或因為多層次繼承導致系統類的個數急劇增加時
C、當一個系統需要在構件的抽象化角色和具體化角色之間增加更多的靈活性時
(2)裝飾者模式:
A、在不影響其他物件的情況下,以動態、透明的方式給單個物件添加附加職責
B、當不能采用繼承的方式對系統進行擴充或者采用繼承不利于系統擴展和維護時
C、需要動態地給一個物件增加功能,這些功能也可以動態地被撤銷
注:橋接模式和裝飾者模式祥見https://www.cnblogs.com/lemonyam/p/11618818.html
和https://www.cnblogs.com/lemonyam/p/11621151.html
工廠方法模式與抽象工廠模式區別:
工廠方法模式類圖

抽象工廠模式類圖

1、定義:
(1)工廠方法模式:定義一個創建產品物件的工廠介面,將產品物件的實際創建作業推遲到具體子工廠類當中
(2)抽象工廠模式:提供一個創建一系列相關或相互依賴物件的介面,而無須指定它們具體的類
2、針對物件:
(1)工廠方法模式:產品等級結構
(2)抽象工廠模式:產品族
3、產品:
(1)工廠方法模式:一個抽象產品,可派生出多個具體產品
(2)抽象工廠模式:多個抽象產品,每個抽象產品又能派生出多個具體產品
4、工廠:
(1)工廠方法模式:一個抽象工廠,可派生出多個具體工廠,每個具體工廠只能創建出一個具體產品類
(2)抽象工廠模式:一個抽象工廠,可派生出多個具體工廠,每個具體工廠可創建出多個具體產品類
注:工廠方法模式和抽象工廠模式詳見https://www.cnblogs.com/lemonyam/p/11617480.html
單例模式:
單例模式類圖

1、定義:單例模式確保某一個類只有一個實體,而且自行實體化并向整個系統提供這個實體,這個類稱為單例類
2、要點:
(1)單例類的建構式為私有,防止類外部實體化
(2)提供一個自身的靜態私有成員變數,將該類實體賦值給它
(3)提供一個公有的靜態工廠方法,回傳該靜態私有成員變數
注:由于類外部無法實體化物件,需要通過類名來回傳物件,所以需要使用靜態方法來回傳;
而靜態域加載是在決議階段,所以需要使用一個靜態成員以供靜態方法呼叫
3、擴展:多例模式 ==> 可通過一個陣列來儲存多個物件,在需要時從陣列中獲取
4、執行緒相關:多執行緒編程語言中,單例模式會涉及同步鎖的問題,而 JavaScript 是單執行緒的,暫可忽略該問題
注:Typescript 是 Javascript 的超集,通過編譯后會轉換為 Javascript
單例模式詳見https://www.cnblogs.com/lemonyam/p/11617344.html
配接器模式與代理模式區別:
(類)配接器模式類圖

代理模式類圖

1、定義:
(1)配接器模式:將一個介面轉換成客戶希望的另一個介面,配接器模式使介面不兼容的那些類可以一起作業
(2)代理模式:給某一個物件提供一個代理,并由代理物件控制對原物件的參考
2、針對內容:這兩種模式都實作了一個類到另一個類之間的中轉
(1)配接器模式:配接器和適配者介面不同,為了呼叫不同的介面而實作轉換
(2)代理模式:代理器和被代理者都繼承自同一介面,只是使用中客戶訪問不到被代理者,所以利用代理間接的訪問
續...
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/39931.html
標籤:設計模式
上一篇:設計模式-行為型-中介者模式
下一篇:設計模式-行為型-訪問者模式
