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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

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

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

模式定義

將抽象部分(業務功能)與實現部分(平臺實現)分離,使它們都可以獨立地變化。

類圖

應用場景

在業務功能具有抽象功能和差異實現時需要獨立的適應后面可能遇到的變化時使用橋接模式

優點

1.符合開閉原則

2.提供方法但是隱藏底層具體實現

3.將功能和實現分離開來,有利于解耦

要點總結

  • Bridge模式使用“對象間的組合關系”解耦了抽象和實現之間固有的綁定關系,使得抽象和實現可以沿著各自的維度來變化,所謂抽象和實現沿著各自維度的變化,即“子類化”它們
  • Bridge模式有時候類似于多繼承方案,但是多繼承方案往往違背了單一職責原則,復用性比較差,Bridge模式是比多繼承方案更好的解決方法。
  • Bridge模式的應用一般在“兩個非常強的變化維度”,有時一個類也有多于兩個維度的變化,這時可以使用Bridge的擴展模式。

Go語言代碼實現

工程目錄

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(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)})}

總結

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

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