Swift-桥接模式

桥接模式定义将抽象部分与实现部分分离,使它们都可以独立的变化.熟悉桥接模式之前需要了解两个概念类的功能层次结构和类的实现层次结构.

类的功能实现层次结构是指如果在项目中新增功能,部分功能项目已经实现,通过添加子类继承来实现新增功能,有可能出现类的层次过多的情况.

类的实现层次结构是指父类通过抽象方法定义接口,新增功能的时候新增抽象方法,子类负责实现具体的实现.

桥接模式.png

抽象(Abstraction):定义抽象接口,该接口中包含实现具体行为、具体特征的Implementor接口.

改善的抽象(RefinedAbstraction):继承自Abstraction的子类,在Abstraction角色基础上增加新功能.

实现者(Implementor):定义用于实现Abstraction行为的接口.

具体实现者(ConcreteImplementor):实现Implementor的接口.

以空调和显示器为例子:

class AirConditioner {
    
    var monitor:Monitor?
    
    init(monitor:Monitor) {
        self.monitor = monitor
    }
    
    func display() { }
}

class HaierAirConditioner: AirConditioner {
    
    override func display() {
        self.monitor?.showTemperature()
    }
    
}
class Monitor {
    
    func showTemperature() { }
}

class TemperatureMonitor:Monitor {
    
    override func showTemperature() {
        print("FlyElephant---风和日丽,万里无云")
    }
    
}
     let airConditioner:HaierAirConditioner = HaierAirConditioner(monitor: TemperatureMonitor())
        airConditioner.display()

适用场景:
① 当一个对象有多个变化因素时,可以考虑使用桥接模式,通过抽象这些变化因素,将依赖具体实现修改为依赖抽象.

② 当一个对象的多个变化因素可以动态变化,不希望影响客户端的程序使用时可以考虑桥接模式.

③ 如果使用继承的实现方案,会导致产生很多子类,任何一个变化因素都需要产生多个类来完成,就要考虑桥接模式.

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容