日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

设计模式--桥(Bridge)模式

發(fā)布時(shí)間:2025/3/21 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式--桥(Bridge)模式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

模式定義

將抽象部分(業(yè)務(wù)功能)與實(shí)現(xiàn)部分(平臺(tái)實(shí)現(xiàn))分離,使它們都可以獨(dú)立地變化。

類圖

應(yīng)用場(chǎng)景

在業(yè)務(wù)功能具有抽象功能和差異實(shí)現(xiàn)時(shí)需要獨(dú)立的適應(yīng)后面可能遇到的變化時(shí)使用橋接模式

優(yōu)點(diǎn)

1.符合開(kāi)閉原則

2.提供方法但是隱藏底層具體實(shí)現(xiàn)

3.將功能和實(shí)現(xiàn)分離開(kāi)來(lái),有利于解耦

要點(diǎn)總結(jié)

  • Bridge模式使用“對(duì)象間的組合關(guān)系”解耦了抽象和實(shí)現(xiàn)之間固有的綁定關(guān)系,使得抽象和實(shí)現(xiàn)可以沿著各自的維度來(lái)變化,所謂抽象和實(shí)現(xiàn)沿著各自維度的變化,即“子類化”它們
  • Bridge模式有時(shí)候類似于多繼承方案,但是多繼承方案往往違背了單一職責(zé)原則,復(fù)用性比較差,Bridge模式是比多繼承方案更好的解決方法。
  • Bridge模式的應(yīng)用一般在“兩個(gè)非常強(qiáng)的變化維度”,有時(shí)一個(gè)類也有多于兩個(gè)維度的變化,這時(shí)可以使用Bridge的擴(kuò)展模式。

Go語(yǔ)言代碼實(shí)現(xiàn)

工程目錄

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-kq0E1ST7-1626706015004)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c3b5d4fdf4ff4cb2b460446d120b5725~tplv-k3u1fbpfcp-watermark.image)]

Bridge.go

package Bridgetype Set struct {impl map[string]bool}func NewSet() *Set {return &Set{make(map[string]bool)}}func (s *Set) Add(key string) {s.impl[key] = true}func (s *Set) Iter(f func(key string)) {for key := range s.impl{f(key)}}

Bridge_test.go

package Bridgeimport ("fmt""testing")func TestNewSet(t *testing.T) {s := NewSet()s.Add("hello")s.Add("world")s.Iter(func(key string) {fmt.Printf("key: %s\n", key)})}

總結(jié)

以上是生活随笔為你收集整理的设计模式--桥(Bridge)模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。