java23种设计模式(四)-- 桥接模式

参考地址:http://www.jasongj.com/design_pattern/bridge/

实现系统可从多种维度分类,桥接模式将各维度抽象出来,各维度独立变化,之后可通过聚合,将各维度组合起来,减少了各维度间的耦合。

代码示例:

1、创建一个车的抽象类(车可以按照牌子分类--BMW,BenZ,Land Rover等,也可以按照变数器分类--手动档、自动档、手自一体)

 1 /**
 2  * author:YZH
 3  * time: 2019/6/11 14:27
 4  * description: 创建抽象类车,并将车的变速器设置为车的一个属性
 5  **/
 6 public abstract class Car {
 7     protected    Transmission transmission;
 8 
 9     protected abstract void run();
10 
11 
12     public void setTransmission(Transmission transmission){
13         this.transmission = transmission;
14     }
15 }
View Code

2、创建变速器接口

/**
 * author:YZH
 * time: 2019/6/11 14:28
 * description: 创建抽象类的车的变速器
 **/
public interface    Transmission {

     void gear();
}

3、创建BMW牌的车(继承Car)

 1 /**
 2  * author:YZH
 3  * time: 2019/6/11 14:39
 4  * description: BMWCar
 5  **/
 6 public class BMWCar extends  Car{
 7     @Override
 8     protected void run() {
 9         transmission.gear();
10         System.out.println("BMW is running");
11     }
12 }
View Code

4、创建手动挡(实现Transmission )

 1 /**
 2  * author:YZH
 3  * time: 2019/6/11 14:41
 4  * description: 手动挡
 5  **/
 6 public class ManualTransmission implements Transmission {
 7     @Override
 8     public void gear() {
 9         System.out.println("Manual transmission");
10     }
11 }
View Code

5、代码调用

 1 /**
 2  * author:YZH
 3  * time: 2019/6/11 14:42
 4  * description: 测试代码
 5  **/
 6 public class BridgeClient {
 7     public static void main(String[] args) {
 8         Transmission transmission = new ManualTransmission();
 9         Car bwmCar = new BMWCar();
10         bwmCar.setTransmission(transmission);
11 
12         bwmCar.run();
13     }
14 }
View Code

6、输出结果

Manual transmission
BMW is running

提示:如果还要创建不同品牌的车,并指定不同的变速器,只需要继承Car,新增变速器类型(实现Transmission )即可。

扫描二维码关注公众号,回复: 6417287 查看本文章

猜你喜欢

转载自www.cnblogs.com/cq-yangzhou/p/11005481.html