日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式--门面(Facade)模式

發布時間:2025/3/21 asp.net 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式--门面(Facade)模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模式定義

為子系統中的一組接口提供一個一致(穩定)的界面,Facade模式定義了一個高層接口,這個接口使得這個子系統更加容易使用(復用)

類圖

應用場景

1.當你需要使用復雜子系統的有限但直接的接口時,請使用Facade模式

2.當你需要將子系統組織成層時,請使用Facade模式

優點

簡化客戶端的調用

要點總結

要點總結

  • 從客戶程序的角度來看,Facade模式簡化了整個組件系統的接口,對于組件內部與外部客戶程序來說,達到了一種“解耦”的效果–內部子系統的任何變化不會影響到facade接口的變化
  • Facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次,Facade很多時候更是一種架構設計模式
  • Facade設計模式并非一個集裝箱,可以任意地放進任何多個對象,Facade模式中組件的內部應該是“相互耦合關系比較大的一系列組件”,而不是一個簡單的功能集合

Go語言代碼實現

工程目錄

facade.go

package Facadeimport "fmt"type CarModel struct {}func NewCarModel() *CarModel {return &CarModel{} }func (c * CarModel) SetModel () {fmt.Println("CarModel - SetModel") }type CarEngine struct {} func NewCarEngine () *CarEngine {return &CarEngine{} }func (c *CarEngine) SetEngine (){fmt.Println("CarEngine - SetEngine") }type CarBody struct {} func NewCarBody () *CarBody {return &CarBody{} }func (c *CarBody) SetCarBody() {fmt.Println("CarBody - SetBody") }type CarFacade struct {model CarModelengine CarEnginebody CarBody }func NewCarFacade() * CarFacade{return &CarFacade{model: CarModel{},engine: CarEngine{},body: CarBody{},} }func (c *CarFacade) CreateCompleteCar() {c.model.SetModel()c.engine.SetEngine()c.body.SetCarBody() }

facade_test.go

package Facadeimport "testing"func TestCarFacade_CreateCompleteCar(t *testing.T) {facade := CarFacade{}facade.CreateCompleteCar() }

總結

以上是生活随笔為你收集整理的设计模式--门面(Facade)模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。