桥接模式

桥接模式-定义

将抽象部分和实践部分分离,使他们都可以独立地进行变化。

桥接模式-解决问题

类层级爆炸问题

桥接模式-使用场景

场景一:开发中面临类层级结构复杂(爆炸),可以使用桥接模式
场景二:对不同的API之间进行桥接
场景三:一个类存在两个独立的维度,且这两个维度都需要进行扩张 (至少是两个维度)

桥接模式-角色划分

角色一:抽象部分(本类或者抽象协议)
角色二:抽象部分具体实现(继承自抽象部分或者遵守抽象协议)
角色三:需优化部分(抽象部分会持有该类对象)
角色四:需优化部分的具体实现

桥接模式-原理案例

喝咖啡
型号:大杯、中杯、小杯
配料:加冰、不加冰、加糖、不加糖

//抽象部分: <也可以定义成协议>
class Coffee: NSObject {
    //第一个维度
    var addtives:CoffeeAddtives
    //第二个维度
    //第三个维度
    
    init(addtives:CoffeeAddtives) {
        self.addtives = addtives
    }
    
    func makeCoffee() {   
    }   
}
//抽象部分具体实现 大杯 
class BigCoffee: Coffee {
    override func makeCoffee() {
        print("大杯\(addtives.addtives())的咖啡")
    }
}

//抽象部分具体实现 中杯
class MediumCoffee: Coffee {

    override func makeCoffee() {
        print("中杯\(addtives.addtives())的咖啡")
    }
}

//抽象部分具体实现 小杯
class SmallCoffee: Coffee {

    override func makeCoffee() {
        print("小杯\(addtives.addtives())的咖啡")
    }
}

//抽象部分:咖啡添加剂  (其实也是需要优化部分的抽象 )
class CoffeeAddtives: NSObject {

    //业务逻辑
    func addtives() -> String {
        return ""
    }
    
}

//需要优化部分具体实现 --- 加冰
class IceAddtives: CoffeeAddtives {

    override func addtives() -> String {
        return "加冰"
    }
    
}
//不加冰
class NonIceAddtives: CoffeeAddtives {

    override func addtives() -> String {
        return "不加冰"
    }
}


//加糖
class SugarAddtives: CoffeeAddtives {

    override func addtives() -> String {
        return "加糖"
    }
}

//不加糖
class NonSugarAddtives: CoffeeAddtives {

    override func addtives() -> String {
        return "不加糖"
    }
    
}

UML 图

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

推荐阅读更多精彩内容

  • 介绍 桥接模式(Bridge Pattern) 也称为桥梁模式,是结构型设计模式之一。桥接模式的作用就是连接 "两...
    任教主来也阅读 2,662评论 0 1
  • 【学习难度:★★★☆☆,使用频率:★★★☆☆】直接出处:桥接模式梳理和学习:https://github.com/...
    BruceOuyang阅读 4,502评论 0 2
  • 在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够...
    justCode_阅读 5,733评论 0 7
  • 简介 Decouple an abstraction from its implementation so tha...
    Whyn阅读 7,469评论 2 3
  • 这份心情, 打了忧伤的妆, 匍匐在暗处, 艰难地爬行着, 然而多少异样...
    彭小汐阅读 1,807评论 0 0