作用:某一个类,出现2个变化维度。
自行车(自行车车道),公交车(公交车道)。如何实现这样不同车型,不同车道的。情景的代码实现。
我们个人代码可能这样实现。不用车在不同路。
class Road{
void run(){
System.out.println("路");
}
}
子类:
class Street extends Road{
void run(){
System.out.println("市区街道");
}
}
子类:
class SpeedWay extends Road{
void run(){
System.out.println("高速路");
}
}
小汽车在高速公路行驶:
class CarOnSpeedWay extends SpeedWay{
void run(){
System.out.println("小车在高速公路行驶");
}
}
调用时,new CarOnSpeedWay();
耦合性太高,并且没用的代码很多。 车在路上,2者都在一个对象中。
桥接模式的话:
抽象类:
abstract class Road{
Car car;
void run(){};
}
abstract class Car{
void run(){};
}
具体实现子类:
class Street extends Road{
void run(){
super.run();
car.run();
System.out.println("在市区街道行驶");
}
}
class smallCar extends Car{
void run(){
super.run();
System.out.println("小汽车");
}
}
客户端调用
main(){
Road street = new Street();
street.car = new SmallCar();
street.run();
street.car = new BusCar();
street.run();
}
把车与路 从继承 变成耦合。相互独立。
多维度,再增加一个人,不同的人 开不同的车 在不同的路:
再增加一个抽象类:
abstract class People{
Road road;
void run(){
}
}
具体实现:
class Man extends People{
void run(){
super.run();
System.out.println("男人开");
road.run();
}
}
由上可得,在家一个维度也是没有问题的。
类似于多继承。