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()

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 发送提示消息## 考虑这样一个实际的业务功能:发送提示消息。基本上所有带业务流程处理的系统...
    七寸知架构阅读 10,513评论 5 63
  • 桥接模式 桥接模式的目的是把抽象层次结构从其实现中分离出来,使其能够独立变更。 抽象层定义了供客户端使用的上层的抽...
    863cda997e42阅读 4,326评论 0 1
  • 在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够...
    justCode_阅读 5,742评论 0 7
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,386评论 1 15
  • 1.介绍 桥接模式,又称为桥梁模式,是结构型设计模式之一。在现实生活中大家都知道“桥梁”是连接河道两岸的主要交通枢...
    四会歌神陈子豪阅读 10,744评论 3 18