国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-05-門面模式Facade)

這篇具有很好參考價(jià)值的文章主要介紹了《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-05-門面模式Facade)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. 概述

門面(Facade)向客戶端提供使用子系統(tǒng)的統(tǒng)一接口,用于簡(jiǎn)化客戶端使用子系統(tǒng)的操作。

1.1 角色

  • 門面角色(Facade)
    • 客戶端可以調(diào)用的接口或方法
    • 此角色知曉系統(tǒng)的所有功能和責(zé)任
    • 一般情況下,該角色沒(méi)有實(shí)際業(yè)務(wù)邏輯,只是一個(gè)委托類。
  • 子系統(tǒng)角色(Subsystem)
    • 同時(shí)有一個(gè)或多個(gè)子系統(tǒng)
    • 子系統(tǒng)并不知道門面的存在(對(duì)于子系統(tǒng),門面是一個(gè)客戶端)

1.2 類圖

2. 代碼示例

2.1 設(shè)計(jì)

  • 分別創(chuàng)建Deployment、Service、PVC三個(gè)類
    • 它們的Create()方法給它本身賦值
    • 它們的Get()方法可以查詢它本身
  • 創(chuàng)建統(tǒng)一門面Project()
    • 它關(guān)聯(lián)了Deployment、ServicePVC三個(gè)類
    • 它的Create()方法調(diào)用Deployment、Service、PVCCreate()方法創(chuàng)建它和所有子系統(tǒng)
    • 它的Get()方法調(diào)用Deployment、ServicePVCCet()方法查詢它和所有子系統(tǒng)
  • 調(diào)用
    • 實(shí)例化一個(gè)門面project
    • 用它的Create()方法統(tǒng)一創(chuàng)建所有子系統(tǒng)
    • 查詢結(jié)果

2.2 代碼

package main

import "fmt"
//創(chuàng)建一個(gè)子系統(tǒng)角色
type Deployment struct {
	Name   string
	Kind   string
	Image  string
	volume string
}

func (deployment *Deployment) Create(name string, image string, volume string) {
	deployment.Name = name
	deployment.Image = image
	deployment.Kind = "Deployment"
	deployment.volume = "pvc:" + volume
}
func (deployment *Deployment) Get() {
	fmt.Printf("%+v\n", deployment)
}
//創(chuàng)建第二個(gè)子系統(tǒng)角色
type Service struct {
	Name     string
	Kind     string
	Selector string
}

func (service *Service) Create(name string, selector string) {
	service.Name = name
	service.Kind = "Service"
	service.Selector = "deployment:" + selector
}
func (service *Service) Get() {
	fmt.Printf("%+v\n", service)
}
//創(chuàng)建第三個(gè)子系統(tǒng)角色
type PVC struct {
	Name string
	Kind string
}

func (pvc *PVC) Create(name string) {
	pvc.Name = name
	pvc.Kind = "PersistentVolumeClaim"
}
func (pvc *PVC) Get() {
	fmt.Printf("%+v\n", pvc)
}
//創(chuàng)建門面,它包含了所有子系統(tǒng)
type Project struct {
	Name       string
	Deployment Deployment
	Service    Service
	PVC        PVC
}

func (project *Project) Create(name string, image string) {
	project.Name = name
	project.PVC.Create("pvc_" + name)
	project.Deployment.Create(name, image, project.PVC.Name)
	project.Service.Create(name, project.Deployment.Name)
}
func (project *Project) Get() {
	fmt.Println(project.Name)
	project.Deployment.Get()
	project.Service.Get()
	project.PVC.Get()
}

func main() {
	project := &Project{}
	project.Create("nginx", "nginx:1.21")
	project.Get()
}
  • 輸出
nginx
&{Name:nginx Kind:Deployment Image:nginx:1.21 volume:pvc:pvc_nginx}
&{Name:nginx Kind:Service Selector:deployment:nginx}               
&{Name:pvc_nginx Kind:PersistentVolumeClaim}

2.2 類圖


《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-05-門面模式Facade),架構(gòu)設(shè)計(jì),golang,后端,Facade,架構(gòu),設(shè)計(jì)模式,門面模式文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-733259.html

到了這里,關(guān)于《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-05-門面模式Facade)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 結(jié)構(gòu)型設(shè)計(jì)模式——橋接模式

    結(jié)構(gòu)型設(shè)計(jì)模式——橋接模式

    橋接模式(Bridge pattern): 使用橋接模式通過(guò)將實(shí)現(xiàn)和抽象放在兩個(gè)不同的類層次中而使它們可以獨(dú)立改變。 橋接模式 (Bridge) 是一種結(jié)構(gòu)型設(shè)計(jì)模式, 可將 抽象 部分與 實(shí)現(xiàn) 部分 分離 ,使它們都可以獨(dú)立的變化。如果一個(gè)系統(tǒng)需要在構(gòu)件的抽象化角色和具體化角色之間增加更

    2024年02月07日
    瀏覽(34)
  • 設(shè)計(jì)模式之結(jié)構(gòu)型模式

    設(shè)計(jì)模式之結(jié)構(gòu)型模式

    本文已收錄于專欄 《設(shè)計(jì)模式》 ??大話設(shè)計(jì)模式主要分為三部分,第一部分是創(chuàng)建型模式,第二部分是結(jié)構(gòu)型模式,第三部分是行為型模式。至于為什么要分為這三部分,我的理解是創(chuàng)建型是用于創(chuàng)建對(duì)象的而結(jié)構(gòu)型是發(fā)生在類與類之間的關(guān)系是比較宏觀的,比如說(shuō)組合

    2024年02月11日
    瀏覽(24)
  • 結(jié)構(gòu)型設(shè)計(jì)模式——外觀模式

    結(jié)構(gòu)型設(shè)計(jì)模式——外觀模式

    有句話說(shuō)這個(gè)世界就是個(gè)草臺(tái)班子,只不過(guò)排面做的好看而已,里面都是一包糠。這句話來(lái)形容外觀模式非常準(zhǔn)確,外觀模式又叫門面模式,顧名思義一個(gè)系統(tǒng)我不管你里面有多復(fù)雜有多少屎山代碼,我只要求你提供的接口好用,簡(jiǎn)單就行,即門面要有排面!用專業(yè)的話講是

    2024年01月22日
    瀏覽(29)
  • 設(shè)計(jì)模式之結(jié)構(gòu)型模式---代理模式

    代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它為目標(biāo)對(duì)象提供一種代理,以控制對(duì)這個(gè)對(duì)象的訪問(wèn)。代理對(duì)象在客戶端和目標(biāo)對(duì)象之間起到中介的作用,客戶端通過(guò)代理類與目標(biāo)對(duì)象進(jìn)行交互,而不是直接與目標(biāo)對(duì)象進(jìn)行交互。 代理模式的應(yīng)用場(chǎng)景非常廣泛,包括但不限于以下幾種情

    2024年04月17日
    瀏覽(29)
  • 設(shè)計(jì)模式之橋接模式【結(jié)構(gòu)型模式】

    設(shè)計(jì)模式之橋接模式【結(jié)構(gòu)型模式】

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 學(xué)習(xí)的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾。各位小伙伴,如果您: 想系統(tǒng)/深入學(xué)習(xí)某技術(shù)知識(shí)點(diǎn)… 一個(gè)人摸索學(xué)習(xí)很難堅(jiān)持,想組團(tuán)高效學(xué)習(xí)… 想寫博

    2024年01月25日
    瀏覽(26)
  • 設(shè)計(jì)模式-結(jié)構(gòu)型模式之橋接模式

    設(shè)計(jì)模式-結(jié)構(gòu)型模式之橋接模式

    設(shè)想如果要繪制矩形、圓形、橢圓、正方形,我們至少需要4個(gè)形狀類,但是如果繪制的圖形需要具有不同的顏色,如紅色、綠色、藍(lán)色等,此時(shí)至少有如下兩種設(shè)計(jì)方案: 第一種設(shè)計(jì)方案是為每一種形狀都提供一套各種顏色的版本。 第二種設(shè)計(jì)方案是根據(jù)實(shí)際需要對(duì)形狀和

    2023年04月18日
    瀏覽(28)
  • 設(shè)計(jì)模式—結(jié)構(gòu)型模式之代理模式

    代理模式(Proxy Pattern) ,給某一個(gè)對(duì)象提供一個(gè)代理,并由代理對(duì)象控制對(duì)原對(duì)象的引用,對(duì)象結(jié)構(gòu)型模式。 比如我們有一個(gè)直播平臺(tái),提供了直播功能,但是如果不進(jìn)行美顏,可能就比較冷清。所以美顏功能就是我們的增強(qiáng),可以用靜態(tài)代理來(lái)實(shí)現(xiàn)。 直播接口: 直播類: 如果

    2024年02月05日
    瀏覽(27)
  • 設(shè)計(jì)模式—結(jié)構(gòu)型模式之橋接模式

    將抽象與實(shí)現(xiàn)解耦,使兩者都可以獨(dú)立變化。 在現(xiàn)實(shí)生活中,某些類具有兩個(gè)或多個(gè)維度的變化,如圖形既可按形狀分,又可按顏色分。如何設(shè)計(jì)類似于 Photoshop 這樣的軟件,能畫不同形狀和不同顏色的圖形呢?如果用繼承方式,m 種形狀和 n 種顏色的圖形就有 m×n 種,不但

    2024年02月05日
    瀏覽(26)
  • 設(shè)計(jì)模式結(jié)構(gòu)型——享元模式

    設(shè)計(jì)模式結(jié)構(gòu)型——享元模式

    目錄 什么是享元模式 享元模式的實(shí)現(xiàn) 享元模式角色 享元模式類圖 享元模式代碼實(shí)現(xiàn) 享元模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 使用場(chǎng)景 注意事項(xiàng) ????????享元模式(Flyweight Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式,享元模式中的“享元”指被共享的單元,享元模式通過(guò)復(fù)用對(duì)象,以達(dá)到節(jié)省

    2024年02月16日
    瀏覽(25)
  • 設(shè)計(jì)模式【結(jié)構(gòu)型】-- 裝飾者模式

    設(shè)計(jì)模式【結(jié)構(gòu)型】-- 裝飾者模式

    裝飾者模式是一種 結(jié)構(gòu)型設(shè)計(jì)模式 ,它允許你動(dòng)態(tài)地將新功能添加到對(duì)象中,通過(guò)將對(duì)象放入包含這些功能的特殊包裝器對(duì)象中。這樣一來(lái),你可以在運(yùn)行時(shí)通過(guò)組合不同的對(duì)象來(lái)擴(kuò)展功能,而不是通過(guò)繼承修改代碼。 大白話 : 裝飾模式,是指在不改變?cè)袑?duì)象的基礎(chǔ)上

    2024年02月16日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包