zoukankan      html  css  js  c++  java
  • 设计模式-桥接模式(Bridge)

    桥接模式是构造型模式之一。把抽象(Abstraction)与行为实现Implementor)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。

    角色和职责:

    1.抽象类(Abstraction)-Car:

       维护对行为实现(Implementor)的引用

    2.具体实现(Concrete Abstraction)-Bus、Jeep:

      具体实现

    3.行为类(Implementor)-Engine:

      行为实现类接口

    4.行为类具体实现(Concrete Implementor)-Engine2000、Engine2200:

      行为类具体实现

    UML图:

    代码如下:

    /**
     * 行为:安装引擎
     */
    public interface Engine {
        void installEngine();//安装引擎
    }
    /**
     * 行为:安装引擎2000
     */
    public class Engine2000 implements Engine{
        @Override
        public void installEngine() {
            System.out.println("安装引擎2000");
        }
    }
    /**
     * 行为:安装引擎2200
     */
    public class Engine2200 implements Engine{
        @Override
        public void installEngine() {
            System.out.println("安装引擎2200");
        }
    }
    /**
     * 汽车
     */
    public abstract class Car {
        protected Engine engine;//引擎的引用
        public Car(Engine engine){
            this.engine = engine;
        }
        public abstract void installEngine();
    }
    /**
     * bus
     */
    public class Bus extends Car{
        public Bus(Engine engine) {
            super(engine);
        }
        @Override
        public void installEngine() {
            System.out.print("bus:");
            engine.installEngine();
        }
    }
    /**
     * jeep
     */
    public class Jeep extends Car{
        public Jeep(Engine engine) {
            super(engine);
        }
    
        @Override
        public void installEngine() {
            System.out.print("jeep:");
            engine.installEngine();
        }
    }
    public class Main {
        public static void main(String[] args) {
            Engine engine2000 = new Engine2000();//引擎2000
            Engine engine2200 = new Engine2200();//引擎2200
    
            Car bus2000 = new Bus(engine2000);//bus安装2000引擎
            bus2000.installEngine();
            Car bus2200 = new Bus(engine2200);//bus安装2200引擎
            bus2200.installEngine();
    
            Car jeep2000 = new Jeep(engine2000);//jeep安装2000引擎
            jeep2000.installEngine();
            Car jeep2200 = new Jeep(engine2200);//jeep安装2200引擎
            jeep2200.installEngine();
        }
    }

    结果:

    bus:安装引擎2000
    bus:安装引擎2200
    jeep:安装引擎2000
    jeep:安装引擎2200

    源码地址:https://github.com/qjm201000/design_pattern_bridge.git

  • 相关阅读:
    C#利用HttpWebRequest进行post请求的示例(HTTPS)
    以文件流的方式读取本地文件
    C#读取xml文件指定节点下的值
    C# get post 的方法
    SQL2008安装后激活方式以及提示评估期已过解决方法(转)
    python 左移右移 2个数交换
    python 循环内部添加多个条件判断会出现越界
    python __new__ __init__ __del__
    python 模块中__all__作用
    Python urllib的urlretrieve()函数解析 (显示下载进度)
  • 原文地址:https://www.cnblogs.com/qjm201000/p/10071671.html
Copyright © 2011-2022 走看看