• 14桥接模式Bridge


    一、什么是桥接模式

      Bridge 模式又叫做桥接模式,是构造型的设 计模式之一。Bridge模式基于类的最小设计原则,通过 使用封装,聚合以及继承等行为来让不同的类承担不同 的责任。它的主要特点是把抽象(abstraction)与行为 实现(implementation)分离开来,从而可以保持各部 分的独立性以及应对它们的功能扩展。

    二、桥接模式的结构

    三、桥接模式的角色和职责

      Client

        Bridge模式的使用者

      Abstraction

        抽象类接口(接口或抽象类)

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

      Refined Abstraction

        Abstraction子类

      Implementor

        行为实现类接口 (Abstraction接口定义了基于Implementor接口的更高层次的操作)

      ConcreteImplementor

        Implementor子类

    eg1

    公共汽车

    1 //公共汽车
    2 public abstract class Bus implements Car {
    3 
    4     public abstract void installEngine();//安装引擎
    5 }

    公共汽车2000

    1 //公共汽车2000
    2 public class Bus2000 extends Bus{
    3 
    4     public void installEngine() {
    5         System.out.println("给Bus安装2000cc发动机");
    6     }
    7 }

    公共汽车2200

    1 //公共汽车2200
    2 public class Bus2200 extends Bus {
    3 
    4     public void installEngine() {
    5         System.out.println("给Bus安装2200cc发动机");
    6     }
    7 }

    汽车

    //汽车
    public interface Car {
        
        public void installEngine();//安装引擎
    }

    Jeep车

    1 //Jeep车
    2 public  abstract class Jeep implements Car {
    3 
    4     public abstract void installEngine();//安装引擎
    5 }
    Jeep2000
    1 //Jeep2000
    2 public class Jeep2000 extends Jeep{
    3 
    4     public void installEngine() {
    5         System.out.println("给Jeep安装2000cc发动机");
    6     }
    7 }

    Jeep2200

    //Jeep2200
    public class Jeep2200 extends Jeep {
    
        public void installEngine() {
            System.out.println("给Jeep安装2200cc发动机");
        }
    }

    测试

    1 public class MainClass {
    2      public static void main(String[] args) {
    3          Car car1 = new Bus2000();
    4          car1.installEngine();//安装引擎
    5      }
    6 }

    ==========================================================================================

    eg2:

    汽车

     1 /*
     2  * 汽车
     3  */
     4 public interface Car {
     5     
     6     public void install2000Engine();//安装2000引擎
     7     
     8     public void install2200Engine();
     9     
    10     public void install2300Engine();
    11 }

    公共汽车

     1 public class Bus implements Car {
     2 
     3     public void install2000Engine() {
     4         System.out.println("给Bus安装2000cc发动机");
     5     }
     6 
     7     public void install2200Engine() {
     8         System.out.println("给Bus安装2200cc发动机");
     9     }
    10 
    11     public void install2300Engine() {
    12         System.out.println("给Bus安装2400cc发动机");
    13     }
    14 }

    测试

    1 public class MainClass {
    2     public static void main(String[] args) {
    3         Car car1 = new Bus();
    4         car1.install2000Engine();
    5     }
    6 }

    ==========================================================================

    eg3:

    发动机

    1 //发动机
    2 public interface Engine {
    3     public void installEngine();
    4 }

    2000发动机

    1 public class Engine2000 implements Engine {
    2 
    3     public void installEngine() {
    4         System.out.println("安装2000cc发动机");
    5     }
    6 }

    2200发动机

    1 public class Engine2200 implements Engine{
    2 
    3     public void installEngine() {
    4         System.out.println("安装2200cc发动机");
    5     }
    6 }

     1 public abstract class Car {
     2     private Engine engine;
     3     
     4     public Car(Engine engine) {
     5         this.engine = engine;
     6     }
     7     
     8     public Engine getEngine() {
     9         return engine;
    10     }
    11 
    12     public void setEngine(Engine engine) {
    13         this.engine = engine;
    14     }
    15 
    16     public abstract void installEngine();
    17 }

    Jeep车

     1 public class Jeep extends Car {
     2 
     3     public Jeep(Engine engine) {
     4         super(engine);
     5     }
     6 
     7     public void installEngine() {
     8         System.out.print("Jeep:");
     9         this.getEngine().installEngine();
    10     }
    11 }

    测试

     1 public class MainClass {
     2     public static void main(String[] args) {
     3         
     4         Engine engine2000 = new Engine2000();
     5         Engine engine2200 = new Engine2200();
     6         
     7         Car car1 = new Bus(engine2000);
     8         car1.installEngine();
     9         
    10         Car car2 = new Bus(engine2200);
    11         car2.installEngine();
    12         
    13         Car jeep1 = new Jeep(engine2000);
    14         jeep1.installEngine();
    15         
    16         Car jeep2 = new Jeep(engine2200);
    17         jeep2.installEngine();
    18         
    19     }
    20 }
    
    
  • 相关阅读:
    巧妇难为无米之炊( Model数据)
    jsp后台取出request请求头
    JSP本质的理解(浏览器调试,response里面的文本都是out.write写入网络流)
    【JZOJ6405】【NOIP2019模拟11.04】c
    【JZOJ6404】【NOIP2019模拟11.04】B
    【JZOJ6403】【NOIP2019模拟11.04】a
    【JZOJ6385】【NOIP2019模拟2019.10.23】B
    【JZOJ6379】【NOIP2019模拟2019.10.06】小w与密码(password)
    【JZOJ6373】【NOIP2019模拟2019.10.04】式神[八云蓝]
    【JZOJ6376】【NOIP2019模拟2019.10.05】樱符[完全墨染的樱花]
  • 原文地址:https://www.cnblogs.com/justdoitba/p/9033690.html
Copyright © 2020-2023  润新知