对设计模式—Bridge模式的认识
Bridge将抽象和行为划分开来,各自独立,可以动态结合变换.
随着社会的发展,交通要求便利,汽车成为交通的主要工具,有车可以加汽油,也可以加柴油.
public abstract class Car{ public CarImp carImp; public abstract void buyOil(); public CarImp getCarImp() { return carImp; } public void setCarImp() { this.carImp = SingletonCarImp.getInstance(); }}public interface CarImp{ public void appendOil();}public class Truck extends Car{ public Truck() { setCarImp(); } public void buyOil() { carImp.appendOil(); }}public class SaloonCar extends Car{ public SaloonCar() { setCarImp(); } public void buyOil() { carImp.appendOil(); }}public class GasCarImp implements CarImp{ public void appendOil() { System.out.println("Append gasoline for salooncar"); }}public class DieselOilCarImp implements CarImp{ public void appendOil() { System.out.println("Append diesel oil for truck"); }}public class SingletonCarImp{ private static CarImp carImp; public SingletonCarImp(CarImp carImp) { this.carImp = carImp; } public static CarImp getInstance() { return carImp; }}public class TestBridge{ public static void main(String[] args) { SingletonCarImp singleton = new SingletonCarImp(new DieselOilCarImp()); Car truck = new Truck(); truck.buyOil(); Car saloonCar = new SaloonCar(); saloonCar.buyOil(); }}Bridge模式看上去和Strategy差不多,很容易让人混淆,我的理解:
Strategy模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类.把多种算法提供给一方来选择变换,更注重算法的变换.
Bridge将抽象和行为划分开来,各自独立,但能动态结合变换.两边都可以进行动态变换结合,为平衡状态.Bridge模式是Strategy模式的延伸.
不知道理解的对不对,请高人指点.