第12节 桥接模式
❤️💕💕Java和Golang的设计模式,设计模式介绍、创建者模式、结构型模式、行为型模式。Myblog:http://nsddd.top
[TOC]
why
在Go语言中,桥接模式(Bridge Pattern)是一种结构型设计模式。它允许你将抽象部分和实现部分分离开来,使它们能够独立地变化。
这种模式的设计关键思想是使用组合而不是继承来组织代码,Golang 中通过接口和结构体实现。
简单实现
package main
import "fmt"
type Implementor interface {
OperationImp() string
}
// 组合
type Abstraction struct {
imp Implementor
}
func (a *Abstraction) Operation() string {
return a.imp.OperationImp()
}
type ConcreteImplementorA struct{}
func (imp *ConcreteImplementorA) OperationImp() string {
return "ConcreteImplementorA operation"
}
type ConcreteImplementorB struct{}
func (imp *ConcreteImplementorB) OperationImp() string {
return "ConcreteImplementorB operation"
}
func main() {
abstraction := &Abstraction{&ConcreteImplementorA{}}
fmt.Println(abstraction.Operation())
abstraction.imp = &ConcreteImplementorB{}
fmt.Println(abstraction.Operation())
}
在上面的代码中,我们定义了一个抽象类Abstraction
及其实现类ConcreteImplementorA
和ConcreteImplementorB
。抽象类Abstraction
包含一个对实现类Implementor
的引用,并定义了一个Operation()
方法,该方法委托给实现类的OperationImp()
方法执行。这样,在使用时,可以根据需要灵活地切换实现类。
在main()
函数中,我们首先创建一个指向ConcreteImplementorA
的指针并调用Operation()
方法。然后,我们将实现类更改为ConcreteImplementorB
,并再次调用Operation()
方法来验证实现的灵活性。
逻辑实现
我们如果需要对某个物品和颜色进行操作,使用 桥接可以了将他们之间联系起来
package main
import "fmt"
// 抽象部分 - 形状
type Shape interface {
Draw()
}
// 实现部分 - 颜色
type Color interface {
ApplyColor()
}
// 实现部分 - 红色
type RedColor struct{}
func (c *RedColor) ApplyColor() {
fmt.Println("Applying red color")
}
// .... 其他颜色
// 扩展抽象部分 - 圆形
type Circle struct {
color Color // 引用实现部分颜色
}
// ... 其他形状
func (s *Circle) Draw() {
fmt.Println("Drawing circle")
s.color.ApplyColor() // 调用实现部分的方法
}
func main() {
circle := &Circle{&RedColor{}}
circle.Draw()
}
在上面的代码中,我们定义了一个抽象类Shape
及其实现类Circle
。抽象类Shape
规定了形状应有的行为Draw()
,并包含一个对实现类Color
的引用。
我们还定义了实现类RedColor
,并实现了它的方法ApplyColor()
。然后,我们扩展了抽象类Shape
,定义了一个圆形类Circle
,它继承了Shape
,并且它的行为Draw()
中调用了实现类的ApplyColor()
方法。
在main()
函数中,我们创建了一个指向Circle
的指针,并将其颜色设置为RedColor
。然后,我们调用Draw()
方法,该方法输出了“Drawing circle”并调用了RedColor
实现类的方法。
优缺点
优点:
- 提高代码重用性和灵活性:适配器模式可以将现有的代码与新的代码组合在一起,从而提高代码的重用性和灵活性。
- 简化代码实现:适配器模式可以隐藏复杂的逻辑,简化代码实现过程。
- 提高系统可靠性:适配器模式可以降低系统间的耦合度,增强系统的可靠性和稳定性。
缺点:
- 过多使用适配器会增加系统复杂性:如果过多地使用适配器模式,会增加系统的复杂性,降低代码的可读性和可维护性。
- 增加系统运行时间和空间开销:适配器模式需要进行额外的逻辑处理,因此会增加系统的运行时间和空间开销。
- 可能存在适配器不兼容问题:由于适配器模式的实现方式不同,可能存在适配器不兼容问题。
END 链接
✴️版权声明 © :本书所有内容遵循CC-BY-SA 3.0协议(署名-相同方式共享)©