GOF设计模式-桥接模式
2017-03-01 14:12
183 查看
桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。
例如汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化
上代码,
代码地址:https://github.com/mazh1992/model/
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。
例如汽车在路上行驶的来说。即有小汽车又有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶。这你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境(路)也在变化,在软件系统中就要适应两个方面的变化
上代码,
public abstract class AbstractCar { abstract void run(); } public abstract class AbstractRoad { AbstractCar aCar; public abstract void run(); } public class SpeedWay extends AbstractRoad { @Override public void run() { aCar.run(); System.out.println("在高速公路行驶"); } } public class Street extends AbstractRoad { @Override public void run() { aCar.run(); System.out.println("在市区街道行驶"); } } public class Bus extends AbstractCar { @Override void run() { System.out.print("公交车"); } } public class Car extends AbstractCar { @Override void run() { System.out.print("小汽车"); } } public class Test { public static void main(String[] args) { AbstractRoad speedWay = new SpeedWay(); speedWay.aCar = new Car(); speedWay.run(); AbstractRoad street = new Street(); street.aCar = new Bus(); street.run(); } }
代码地址:https://github.com/mazh1992/model/
相关文章推荐
- GOF 23设计模式之 桥接模式
- Bridge桥接模式 - GoF设计模式(一)
- GoF23种设计模式之结构型模式之桥接模式
- 【GOF23设计模式】桥接模式
- 【GOF23设计模式】_装饰模式_IO流底层架构_装饰和桥接模式的区别JAVA240
- GoF23种设计模式之结构型模式之桥接模式
- 【GOF23设计模式】_桥接模式_多层继承结构JAVA238
- GoF23种设计模式之结构型模式之桥接模式
- Dot Net设计模式—桥接模式
- 设计模式学习笔记(八)——Bridge桥接模式
- GOF设计模式学习小节(二)
- 追MM“23式”—— GOF 23种设计模式
- 从GOF的设计模式说起
- GOF设计模式-创建型模式理解与思索(二)(Factory Method分析)
- 学习GoF设计模式的重要性
- .NET设计模式(9):桥接模式(Bridge Pattern)
- 设计模式之桥接模式(Bridge)
- 关于Gof设计模式的精辟总结
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系
- 重读GoF设计模式 -- simple factory