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

  • 相关阅读:
    java--递归删除目录
    java--获取文件夹大小
    我经历中最重要的三位老师
    我的自我介绍
    如何判断多选框是否选中?
    控制总线 数据总线和地址总线是三根线吗
    单元格中间没有边框
    页面上插入bootstrap Glyphicons时遇到的问题
    浏览器回退键——重复提交
    【excel】excel转成csv乱码问题
  • 原文地址:https://www.cnblogs.com/qjm201000/p/10071671.html
Copyright © 2011-2022 走看看