桥接模式:是一种结构型设计模式,它将抽象部分和实现部分分离,使它们可以独立变化。桥接模式通过组合的方式,将一个对象的实现和它的抽象分离开来,从而使它们可以独立地变化。
在桥接模式中,抽象部分和实现部分都可以有多个变化的维度,它们通过一个桥接接口来连接。抽象部分和实现部分之间的桥接接口可以使用抽象类或接口来定义。
桥接模式的优点:
- 分离抽象部分和实现部分,使它们可以独立变化,提高了系统的灵活性和扩展性。
- 桥接模式可以减少子类的个数,因为所有的实现部分都可以通过桥接接口来连接。
- 桥接模式可以使系统更加稳定,因为抽象部分和实现部分都可以独立地进行变化,不会相互影响。
桥接模式的缺点:
- 桥接模式增加了系统的复杂度,因为需要定义抽象部分和实现部分之间的桥接接口。
- 桥接模式需要额外的代码,因为需要定义抽象部分和实现部分的类和接口。
桥接模式适用场景:
- 需要在抽象化和具体化之间增加更多的灵活性,避免在两个层次之间建立静态的继承关系
- 抽象部分和实现部分可以以继承的方式独立扩展而互不影响
- 一个类存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立地进行扩展
- 不希望使用继承或因为多层继承导致系统类的个数急剧增加的系统
桥接模式包含如下角色:
- Abstraction:抽象类
- RefinedAbstraction:扩充抽象类
- Implementor:实现类接口
- ConcreteImplementor:具体实现类类
实现一个通用的电视机遥控器,可以遥控多种品牌的电视机,但不同品牌的电视机控制方式不同。使用桥接模式将遥控器和电视机解耦,使得它们可以独立地变化。
- 定义遥控器接口和电视机接口
1 | //遥控器接口 |
- 实现遥控器和电视机的具体类
1 | //索尼遥控器 |
- 测试桥接模式
1 | public class Client { |
这里使用桥接模式将遥控器和电视机解耦,使得它们可以独立地变化。如果需要增加一种新品牌的电视机,只需要实现TV接口即可,不需要修改遥控器的代码。同样,如果需要增加一种新品牌的遥控器,只需要实现RemoteControl接口即可,不需要修改电视机的代码。
- 本文作者: zzr
- 本文链接: http://zzruei.github.io/2023/04ca35257c.html
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!