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

  • 相关阅读:
    get started with laravel
    redis消息队列
    javascript模板引擎Mustache
    YIi 权限管理和基于角色的访问控制
    Yii CDbCriteria
    C++ 推断进程是否存在
    IE浏览器开启对JavaScript脚本的支持
    最小公约数(欧几里得算法&&stein算法)
    Nyoj 43 24 Point game 【DFS】
    【蓝桥杯】PREV-5 错误票据
  • 原文地址:https://www.cnblogs.com/qjm201000/p/10071671.html
Copyright © 2011-2022 走看看