zoukankan      html  css  js  c++  java
  • 设计模式:学习笔记(9)——桥接模式

    设计模式:学习笔记(9)——桥接模式

    桥接模式

    什么是桥接模式

      桥接模式是设计模式中最复杂的设计模式之一,它把事务对象和其具体行为、具体特征分离开来,使他们可以各自独立变化

      举个例子:有三个品牌的汽车,路虎,宝马,奔驰,每个品牌有两项特征,有无天窗、是否为自动挡。如果我们各自为其创建具体类的话,需要3*2*2=12个类。

      比如单路虎车就有:

        

      桥接模式就是将事务的特征和行为抽象出来,让他们各自变化,再最后把他们组合起来形成需要的各种类,减少了各维度间的耦合

    理解

      首先我们将两项特征抽象出来

      

      接着,通过访问器的方式,将这些特征附加到汽车上:

      

      到这里我想,大家都应该知道桥接模式是怎么回事了吧。现在我们需要多少个类呢?即使包含抽象的父类,我们也只需要3+3+4=10个类。

     桥接模式的简单实现

      根据目前我们了解到的知识,我们来实现一辆无天窗的自动挡宝马汽车。

    class abstract Transmission{}
    class abstract TopWindow{}
    class abstract Car{
        protected Transmission t;
        protected TopWindow tw;
        public void setTransmission(Transmission t){this.t = t}
        public void setTopWindow(TopWindow tw){this.tw = tw}
    }
    
    class Auto extends Transmission{}
    class NoneTopWindow extends TopWindow{}
    class BWMCar extends Car{}
    
    
    /**
     * 组装一辆无天窗的自动挡宝马
     */
    public static void main(String[] args) {
        BWMCar bwm = new BWMCar();
        bwm.setTransmission(new Auto());
        bwm.setTopWindow(new NoneTopWindow());
        //组装完成
    }
  • 相关阅读:
    友盟上报 IOS
    UTF8编码
    Hill加密算法
    Base64编码
    Logistic Regression 算法向量化实现及心得
    152. Maximum Product Subarray(中等, 神奇的 swap)
    216. Combination Sum III(medium, backtrack, 本类问题做的最快的一次)
    77. Combinations(medium, backtrack, 重要, 弄了1小时)
    47. Permutations II(medium, backtrack, 重要, 条件较难思考)
    3.5 find() 判断是否存在某元素
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9061949.html
Copyright © 2011-2022 走看看