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