《一》 桥接 将抽象部分与实现部分分离,使它们都可以独立的变化。 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化。
传统方法
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 CarOnStreet extends Street { void run() { System.out.println(“小汽车在市区街道行驶”); } } //小汽车在高速公路行驶 class CarOnSpeedWay extends SpeedWay { void run() { System.out.println(“小汽车在高速公路行驶”); } } //公交车在市区街道行驶 class BusOnStreet extends Street { void run() { System.out.println(“公交车在市区街道行驶”); } } //公交车在高速公路行驶 class BusOnSpeedWay extends SpeedWay { void run() { System.out.println(“公交车在高速公路行驶”); } } //测试 public static void main(String[] args) {
//小汽车在高速公路行驶
CarOnSpeedWay carOnSpeedWay = new CarOnSpeedWay();
carOnSpeedWay.run();
//公交车在市区街道行驶
BusOnStreet busOnStreet = new BusOnStreet();
busOnStreet.run();
}
应用设计模式
abstract class AbstractRoad{ AbstractCar aCar; void run(){}; } abstract class AbstractCar{ void run(){}; } class Street extends AbstractRoad{ @Override void run() { // TODO Auto-generated method stub super.run(); aCar.run(); System.out.println(“在市区街道行驶”); } } class SpeedWay extends AbstractRoad{ @Override void run() { // TODO Auto-generated method stub super.run(); aCar.run(); System.out.println(“在高速公路行驶”); } } class Car extends AbstractCar{ @Override void run() { // TODO Auto-generated method stub super.run(); System.out.print(“小汽车”); } } class Bus extends AbstractCar{ @Override void run() { // TODO Auto-generated method stub super.run(); System.out.print(“公交车”); } }