Bridge将抽象和行为划分开来,各自独立,可以动态结合变换.
随着社会的发展,交通要求便利,汽车成为交通的主要工具,有车可以加汽油,也可以加柴油.
Bridge模式看上去和Strategy差不多,很容易让人混淆,我的理解:
Strategy模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类.把多种算法提供给一方来选择变换,更注重算法的变换.
Bridge将抽象和行为划分开来,各自独立,但能动态结合变换.两边都可以进行动态变换结合,为平衡状态.Bridge模式是Strategy模式的延伸.
不知道理解的对不对,请高人指点.
随着社会的发展,交通要求便利,汽车成为交通的主要工具,有车可以加汽油,也可以加柴油.
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模式的延伸.
不知道理解的对不对,请高人指点.