設計模式(2) 策略模式--行爲型

定義

策略模式定義了算法族,分別封裝起來,讓它們之間可以互相替換,此模式讓算法獨立於使用算法的客戶。

角色

環境類(Context):用一個ConcreteStrategy對象來配置。維護一個對Strategy對象的引用。可定義一個接口來讓Strategy訪問它的數據。
抽象策略類(Strategy):定義所有支持的算法的公共接口。 Context使用這個接口來調用某ConcreteStrategy定義的算法。
具體策略類(ConcreteStrategy):以Strategy接口實現某具體算法。

類圖

這裏寫圖片描述

示例

典型案例是一個人可以通過火車,自行車,飛機,汽車去旅行。一個接口多個實現。由客戶端決定調用哪個實現。

public interface IVehicles {
    void transportWay();
}
public class VehiclesAirplane implements IVehicles {
    public void transportWay(){
        System.out.println("I travel use airplane.");
    }
}
public class VehiclesBike implements IVehicles {
    public void transportWay(){
        System.out.println("I travel use bike.");
    }
}
public class VehiclesCar implements IVehicles {
    public void transportWay(){
        System.out.println("I travel use car.");
    }
}
public class Context {
    public Context(){

    }
    private IVehicles vehicles;

    public Context(IVehicles vehicles){
        this.vehicles= vehicles;
    }

    public void way(){
        vehicles.transportWay();
    }
}
public class Client {
    public static void main(String[] args) {
        IVehicles vehicles = new VehiclesAirplane();
        Context context = new Context(vehicles);
        context.way();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章