引例:
就拿汽车在路上行驶来说。有小汽车,有公共汽车,它们都不但能在市区中的公路上行驶,也能在高速公路上行驶,这时你会发现,对于交通工具(汽车)有不同的类型,然而它们所行驶的环境也在变化,在软件系统中就要适应这两个方面的变化,怎么才应付这种变化呢?
概述:
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的,那么如何应对这种“多维度的变化”?就要利用面向对象的技术来使得类型能够沿着多个方向进行,但又不引入额外的复杂度?这就要用到Bridge模式。
意图:
将抽象部分与实现部分分离,使得它们都可以独立的变化-------------GOF
结构图:
{ { pubilc void run(){System.out.println("在路上");} } public class SpeedWay extends Road { public void run(){System.out.println("高速公路");} } //市区街道 public class Street extends Road { public void run(){System.out.println("市区街道");} } public class CarOnSpeedWay extends SpeedWay { public void run(){System.out.println("小汽车在调整公路上行驶");} } public class BusOnSpeedWay extends SpeedWay { public void run(){System.out.println("公共汽车在高速公路上行驶");} } public class CarOnStreet extends Street{ public void run(){System.out.println("汽车在街道上行驶");} } public class BusOnStreet extends Street{ public void run(){System.out.println("公共汽车在街道上行驶");} } |
传统做法通过继承来实现
结构图: