• 设计模式-桥接模式(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

  • 相关阅读:
    如何在DBGrid中能支持多项记录的选择
    How to create a OnCellDblClick for Delphi's TDBGrid
    如何在DBGrid里实现Shift+“选择行”区间多选的功能!
    DBGrid中Shift多选
    代码校验工具 SublimeLinter 的安装与使用
    jquery压缩图片插件
    React 入门最好的实例-TodoList
    前端切图
    提升前端效率的方式
    单页面应用的痛点
  • 原文地址:https://www.cnblogs.com/qjm201000/p/10071671.html
Copyright © 2020-2023  润新知