Go 實現常用設計模式(八)外觀模式

pibigstar發表於2019-09-07

意圖:
提供了一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更容易使用。

關鍵程式碼:
外觀層中依次呼叫子系統的介面

應用例項:

  1. 電腦開機時,點選開機按鈕,但同時啟動了CPU,記憶體,硬碟等
  2. 用 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 協議》,轉載必須註明作者和本文連結

相關文章