桥接模式的用意是将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化
概念的东西到此为止,举个例子,假设汽车有2种行驶状态,100km/h高速行驶和10km/h低速行驶,现在有10种汽车,都必须实现这2种状态,有一种方法是,每种汽车都写一个“高速行驶”和“低速行驶”的方法,但是如果有100种行驶状态100种汽车呢,那写下去可就。。。所以,桥接模式就是为了解决这种问题,将抽象和实现分离,类似spring的aop
定义一个行驶的接口
package bridge;
public interface IRun {
public void run();
}
实现行驶的接口
package bridge;
public class HighSpeedRun implements IRun {
@Override
public void run() {
System.out.println("以100km/h的速度高速行驶中");
}
}
package bridge;
public class LowSpeedRun implements IRun {
@Override
public void run() {
System.out.println("以10km/h的速度低速行驶中");
}
}
定义一个汽车的父类
package bridge;
public class Car {
private IRun run;
public IRun getRun() {
return run;
}
public void setRun(IRun run) {
this.run = run;
}
public void run(){
this.run.run();
}
}
定义一辆卡车继承汽车父类
package bridge;
public class Truck extends Car {
@Override
public void run() {
System.out.print("卡车鸣着喇叭");
super.run();
}
}
定义一辆巴士继承汽车父类
package bridge;
public class Bus extends Car {
@Override
public void run() {
System.out.print("巴士闪着车前灯");
super.run();
}
}
运行一下
package bridge;
public class MainRun {
/**
* bridge 桥接模式
* @author 7FisH
*/
public static void main(String[] args) {
HighSpeedRun hsr = new HighSpeedRun();
LowSpeedRun lsr = new LowSpeedRun();
Truck truck = new Truck();
Bus bus = new Bus();
truck.setRun(hsr);
truck.run();
System.out.println("=================================================================");
truck.setRun(lsr);
truck.run();
System.out.println("=================================================================");
bus.setRun(hsr);
bus.run();
System.out.println("=================================================================");
bus.setRun(lsr);
bus.run();
System.out.println("=================================================================");
}
}
结果:
卡车鸣着喇叭以100km/h的速度高速行驶中
=================================================================
卡车鸣着喇叭以10km/h的速度低速行驶中
=================================================================
巴士闪着车前灯以100km/h的速度高速行驶中
=================================================================
巴士闪着车前灯以10km/h的速度低速行驶中
=================================================================
以上为个人理解,不对之处,还望帮忙指出