橋接模式與裝飾者模式區別: 橋接模式類圖 裝飾者模式類圖 1、定義: (1)橋接模式:將抽象部分與它的實現部分分離,使它們都可以獨立地變化 (2)裝飾者模式:動態地給一個對象增加一些額外的職責,就增加對象功能來說,裝飾模式比生成子類實現更為靈活 2、“獨立部分”不同: (1)橋接模式:抽象類和實現接 ...
橋接模式與裝飾者模式區別:
橋接模式類圖
裝飾者模式類圖
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)代理模式:代理器和被代理者都繼承自同一介面,只是使用中客戶訪問不到被代理者,所以利用代理間接的訪問
續...