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

  • 相关阅读:
    安卓渗透测试环境搭建笔记
    spring boot Thymeleaf 模板注入 测试实践
    分析activity安全检测实践
    xposed的使用实践
    android组件安全测试实践
    Apache Dubbo Provider默认反序列漏洞复现实践(CVE-2020-1948)
    java设计模式--策略模式
    spring 发送email
    简单介绍
    有意义的礼物——英语小短文
  • 原文地址:https://www.cnblogs.com/qjm201000/p/10071671.html
Copyright © 2011-2022 走看看