結構型:二. 外觀模式(facade)
阿新 • • 發佈:2022-03-22
外觀模式是什麼
外觀模式是一種結構性設計模式,它能為程式庫、框架或者其他複雜的子系統提供一個統一的高層介面,使子系統更容易使用。外觀模式就是聚合多個介面實現,對外只暴露單個介面。隱藏子系統的複雜性。呼叫方不關心實現步驟。
為什麼要用外觀模式
當子系統提供的功能很多,而我們子需要多個子系統中很少的幾個功能時。這時我們可以用外觀模式,讓我們不必關注與子系統眾多的方法。或者子系統相互呼叫複雜時,外觀模式我們不必清楚子系統中眾多類之間的相互呼叫關係。
外觀模式怎麼實現
電腦啟動需要依次啟動電源、主機板、CPU、記憶體、硬碟。當然我們也可以用外觀模式封裝一下,把它們都封裝到一起。當然這個例子比較簡單,子系統之間沒有相互呼叫。
package facade import "fmt" // 電源 type Power struct{} func (Power) start() { fmt.Println("啟動電源。。。") } // 主機板 type Motherboard struct{} func (Motherboard) start() { fmt.Println("啟動主機板。。。") } // CPU type CPU struct{} func (CPU) start() { fmt.Println("啟動CPU。。。") } // 記憶體 type Memory struct{} func (Memory) start() { fmt.Println("啟動記憶體管理。。。") } // 硬碟 type Disk struct{} func (Disk) start() { fmt.Println("啟動硬碟。。。") } // 開機鍵 type Computer struct{} func (Computer) Start() { new(Power).start() new(Motherboard).start() new(CPU).start() new(Memory).start() new(Disk).start() }
優點
- 提高易用性:外觀模式使子系統更容易使用,客戶端更容易使用子系統功能。
- 重點突出,降低複雜度:外觀模式更能體現子系統的核心功能,重點突出,一定程度降低系統整體複雜度。
- 減少依賴:客戶端呼叫外觀模式提供的統一高層介面,比客戶端單獨呼叫眾多子系統減少依賴,降低子系統與呼叫者之間的耦合度。
缺點
- 外觀類可能耦合的類較多,使外觀類變的臃腫,且不易維護。