14桥接模式Bridge

Posted 未来_我来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

 

 

 


以上是关于14桥接模式Bridge的主要内容,如果未能解决你的问题,请参考以下文章

桥接模式(Bridge)

设计模式之桥接模式 Bridge

C++设计模式——桥接模式(Bridge Pattern)

设计模式之十八:桥接模式(Bridge)

设计模式 -- 桥接模式(Bridge)

桥接模式(Bridge Pattern)