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());
        //组装完成
    }
  • 相关阅读:
    Zookeeper 系列(五)Curator API
    Zookeeper 系列(四)ZKClient API
    Zookeeper 系列(三)Zookeeper API
    Zookeeper 系列(二)安装配制
    [bzoj 2393] Cirno的完美算数教室 (容斥原理+dfs剪枝)
    [Sdoi2013] [bzoj 3198] spring (hash+容斥原理)
    [bzoj 1471] 不相交路径 (容斥原理)
    [bzoj 3701] Olympic Games (莫比乌斯反演)
    [bzoj 2693] jzptab & [bzoj 2154] Crash的数字表格 (莫比乌斯反演)
    [51Nod 1244]
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9061949.html
Copyright © 2011-2022 走看看