最近一直在看設計模式方面的書,看完了第一部分接口型模式,下面是我的一些個人理解:
1. Adapter(適配器)模式
我的理解就是怎樣通過調用已經存在的方法來解決客戶給我們的問題,這里的調用已經存在的方法就是java中的復用代碼,可以通過組合和繼承來實現。換句話說,就是引用或者繼承現有的方法類來適配客戶提供來的問題接口。
2. Facade(外觀)模式
定位于內部組件和外部客戶程序之間,用于二者間的橋梁。中間類的建立主要面向外部客戶程序,為其提供功能接口,其方法體通過調用內部組件來實現。這樣不僅簡化了調用關系,還在一定程度上達到了“解耦”的效果。
3. Composite(組合)模式
主要解決客戶在處理單個對象和組合對象上的接口一致性。具體的解決方法就是使用將對象用“樹型結構”組織起來,以達成“部分-整體”的層次結構。通過遍歷(Iterator)整個樹型結構,獲取所有的對象。
4. Bridge(橋接)模式
進一步的將抽象化與實現化“解耦”。橋梁模式中的所謂脫耦,就是指在一個軟件系統的抽象化和實現化之間使用組合/聚合關系而不是繼承關系,從而使兩者可以相對獨立地變化。
抽象化角色(Abstraction)引用了實現化角色(Implementor)的接口,并且抽象了客戶的功能接口(面向客戶)。
實現化角色(Implementor)抽象出底層操作(面向底層)。
Composite(組合)模式
意圖在與:讓用戶能夠使用統一的接口處理單個對象以及對象組合
理解:
Component類抽象出Leaf類和Composite類共享的公共接口,在Composite類中使用遞歸(iterator)定義關于對象組合的方法。
個人感覺:composite模式就是定義一個統一的接口既可以處理單個對象,又可以處理對象的組合。其中對組合對象的處理又不斷被細分到對其中所包含的單個對象的處理,(使用遞歸遍歷各個結點)。
Facade(外觀)模式
旨在提供一個接口,使子系統更加容易使用
Before Facade
Using Facade
Facade模式 與 Adapter模式
相似:為既存的類提供界面統一的接口,以供外部類調用
不同:Facade模式的目的是簡化調用關系
Adapter模式是為不同的模塊/子系統提供一個統一的接口(支持多態),旨在將一個或多個已經存在的不統一的接口轉化為另一個統一的接口
Adapter(適配器)模式
旨在保留現有類所提供的服務,向客戶提供接口,以滿足客戶的期望
即存在方法類,并可以提供給客戶的需求接口
理解1.類適配器
通過繼承得到已存方法類的方法使用權去實現所需的客戶接口
理解2.對象適配器
擴展一個客戶所需的目標類,并把它委派給一個現有的方法類去實現
區別:
類適配器是擴展一個現有的類,并實現一個目標接口
對象適配器是擴展一個目標類,并把它委派給一個現有的類