模式定义
将形象局部(业务性能)与实现局部(平台实现)拆散,使它们都能够独立地变动。
类图
利用场景
在业务性能具备形象性能和差别实现时须要独立的适应前面可能遇到的变动时应用桥接模式
长处
1.合乎开闭准则
2.提供办法然而暗藏底层具体实现
3.将性能和实现拆散开来,有利于解耦
要点总结
- Bridge模式应用“对象间的组合关系”解耦了形象和实现之间固有的绑定关系,使得形象和实现能够沿着各自的维度来变动,所谓形象和实现沿着各自维度的变动,即“子类化”它们
- Bridge模式有时候相似于多继承计划,然而多继承计划往往违反了繁多职责准则,复用性比拟差,Bridge模式是比多继承计划更好的解决办法。
- Bridge模式的利用个别在“两个十分强的变动维度”,有时一个类也有多于两个维度的变动,这时能够应用Bridge的扩大模式。
Go语言代码实现
工程目录
Bridge.go
package Bridge type 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 Bridge import ( "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) }) }