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

《golang設(shè)計模式》第二部分·結(jié)構(gòu)型模式-02-橋接模式(Bridge)

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

1. 概念

橋(Bridge)使用組合關(guān)系將代碼的實現(xiàn)層和抽象層分離,讓實現(xiàn)層與抽象層代碼可以分別自由變化。

例如 客戶端調(diào)用橋接接口實現(xiàn)原有功能和擴展功能的組合

1.1 角色

  • Implementor(實施者):
    • 具體實施者的抽象,可以是一個接口。
  • Concrete Implementor(具體實施者):
    • 可以理解為擴展之前的原有功能
    • 橋接接口會在實現(xiàn)擴展功能的基礎(chǔ)上調(diào)用它實現(xiàn)這些原有功能
  • Abstraction(抽象化):
    • 我們可以理解為橋接接口,它在提供擴展功能的同時也橋接了原有功能的接口
    • Refined Abstraction提供一個統(tǒng)一接口
    • 它關(guān)聯(lián)了Implementor(或者進一步是Implementor的聚合)
  • Refined Abstraction(擴展抽象化):
    • 可以理解為它實現(xiàn)了具體的擴展功能,并實際調(diào)用了mplementor接口完成了原有功能

1.2 類圖

2. 代碼示例

2.1 設(shè)計

  • 定義一個實施者顏色
  • 定義三個具體實施者紅色綠色、黃色
    • 他們的use()方法來實現(xiàn)使用對應(yīng)顏色
  • 定義一個抽象化類(橋接接口)筆刷
  • 定義兩個擴展抽象化類粗筆刷、細筆刷
    • 他們的畫畫方法
      • 實現(xiàn)擴展功能——用對應(yīng)筆刷畫畫
      • 同時調(diào)用實施者接口,實現(xiàn)了對應(yīng)的顏色功能
  • 定義一個工廠函數(shù)用來實例化一個具體的筆刷
  • 調(diào)用
    • 聲明一個實施者
    • 實例化一個具體實施者
    • 用具體實施者實例化一個橋接
    • 調(diào)用橋接的方法實現(xiàn)原有功能和擴展功能的組合

2.1 代碼

package main

import "fmt"

//定義實施者類
type Color interface {
	Use()
}

//定義具體實施者A
type Red struct{}

func (r Red) Use() {
	fmt.Println("Use Red color")
}
//定義具體實施者B
type Green struct{}

func (g Green) Use() {
	fmt.Println("Use Green color")
}
//定義具體實施者C
type Yellow struct{}

func (y Yellow) Use() {
	fmt.Println("Use Yellow color")
}

// 定義抽象化類(或叫橋接接口)
type BrushPen interface {
	DrawPicture()
}

// 定義擴展抽象化A
type BigBrushPen struct {
	Color
}

//提供擴展功能,同時選擇原功能執(zhí)行
func (bbp BigBrushPen) DrawPicture() {
	fmt.Println("Draw picture with big brush pen")
	bbp.Use()
}

// 定義擴展抽象化B
type SmallBrushPen struct {
	Color
}
//提供擴展功能,同時選擇原功能執(zhí)行
func (sbp SmallBrushPen) DrawPicture() {
	fmt.Println("Draw picture with small brush pen")
	sbp.Use()
}

// 定義工廠方法生產(chǎn)具體的擴展抽象化(此處為了方便展示,和橋接模式無關(guān))
func NewBrushPen(t string, color Color) BrushPen {
	switch t {
	case "BIG":
		return BigBrushPen{
			Color: color,
		}
	case "SMALL":
		return SmallBrushPen{
			Color: color,
		}
	default:
		return nil
	}
}

func main() {
    //聲明實施者
	var tColor Color
	fmt.Println("========== 第一次測試 ==========")
	//定義為具體實施者
	tColor = Red{}
	//用具體實施者實例化一個抽象化
	tBrushPen := NewBrushPen("BIG", tColor)
	//用抽象化的畫畫功能完成擴展功能(粗細筆刷)和對應(yīng)原功能(顏色)的組合操作
	tBrushPen.DrawPicture()
	fmt.Println("========== 第二次測試 ==========")
	tColor = Green{}
	tBrushPen = NewBrushPen("SMALL", tColor)
	tBrushPen.DrawPicture()
	fmt.Println("========== 第三次測試 ==========")
	tColor = Yellow{}
	tBrushPen = NewBrushPen("BIG", tColor)
	tBrushPen.DrawPicture()
}
  • 輸出
========== 第一次測試 ==========
Draw picture with big brush pen  
Use Red color
========== 第二次測試 ========== 
Draw picture with small brush pen
Use Green color
========== 第三次測試 ========== 
Draw picture with big brush pen  
Use Yellow color

2.2 類圖


《golang設(shè)計模式》第二部分·結(jié)構(gòu)型模式-02-橋接模式(Bridge),架構(gòu)設(shè)計,golang,設(shè)計模式,橋接模式,架構(gòu)師,Bridge文章來源地址http://www.zghlxwxcb.cn/news/detail-655964.html

到了這里,關(guān)于《golang設(shè)計模式》第二部分·結(jié)構(gòu)型模式-02-橋接模式(Bridge)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

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

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

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

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

    2024年01月22日
    瀏覽(28)
  • 設(shè)計模式之結(jié)構(gòu)型模式

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

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

    2024年02月11日
    瀏覽(24)
  • 設(shè)計模式—結(jié)構(gòu)型模式之代理模式

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

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

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

    2024年02月05日
    瀏覽(26)
  • 設(shè)計模式之結(jié)構(gòu)型模式---代理模式

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

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

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

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

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

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

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

    2023年04月18日
    瀏覽(27)
  • 設(shè)計模式【結(jié)構(gòu)型】-- 裝飾者模式

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

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

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

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

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

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包