美文网首页
桥接模式

桥接模式

作者: 一毛钱 | 来源:发表于2019-03-30 15:26 被阅读0次

    桥接模式-定义

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

    桥接模式-解决问题

    类层级爆炸问题

    桥接模式-使用场景

    场景一:开发中面临类层级结构复杂(爆炸),可以使用桥接模式
    场景二:对不同的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

    相关文章

      网友评论

          本文标题:桥接模式

          本文链接:https://www.haomeiwen.com/subject/jktsbqtx.html