意圖:
提供了一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更容易使用。
關鍵程式碼:
外觀層中依次呼叫子系統的介面
應用例項:
- 電腦開機時,點選開機按鈕,但同時啟動了CPU,記憶體,硬碟等
- 用 Java 開發我們經常使用三層結構:controller 控制器層,service 服務層,dao 資料訪問層
Go實現外觀模式
package facade
import "fmt"
// 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 StartBtn struct {
}
func (StartBtn) start() {
cpu := &CPU{}
cpu.start()
memory := &Memory{}
memory.start()
disk := &Disk{}
disk.start()
}
測試用例
package facade
import "testing"
func TestFacade(t *testing.T) {
startBtn := &StartBtn{}
startBtn.start()
}
具體程式碼
更詳細的程式碼可參考:https://github.com/pibigstar/go-demo 裡面包含了 Go 常用的設計模式、Go 面試易錯點、簡單的小專案(區塊鏈,爬蟲等)、還有各種第三方的對接(redis、sms、nsq、elsticsearch、alipay、oss...),如果對你有所幫助,請給個 Star
,你的支援,是我最大的動力!
本作品採用《CC 協議》,轉載必須註明作者和本文連結