strategy - 行爲對象型模式

           1.意圖
            定義一系列算法並且封裝起來是它們可以相互替換。此模式可以使算法獨立於使用的客戶而變化
            2.參與者
            Strategy -定義算法的公共接口,Context調用具體算法
            ConcreteStrategy - 實現具體的算法
            Context - 用一個具體ConcreteStrategy來配置
                    - 維護一個Strategy對象引用
                    - 定義一個接口讓Strategy訪問它的數據

         3.結構

 4.代碼

public interface Strategy {
  int getPrice();
}

public class ConcreteStrategy implements Strategy {

	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 20;
	}

}

public class ConcreteStrategy2 implements Strategy {

	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 15;
	}

}

public class ConcreteStrategy3 implements Strategy {

	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 10;
	}

}

public class ConcreteStrategy4 implements Strategy {

	@Override
	public int getPrice() {
		// TODO Auto-generated method stub
		return 20;
	}

}
public class Context {
	private Strategy strategy;
	public int getPrice(){
		return strategy.getPrice();
	}
	public Strategy getStrategy() {
		return strategy;
	}
	public void setStrategy(Strategy strategy) {
		this.strategy = strategy;
	}
	
}

public class Client {
	public static void main(String[] args) {
		Context c = new Context();
		c.setStrategy(new ConcreteStrategy());
		System.out.println(c.getPrice());
	}
}

5.策略模式需要客戶知道各個模式作用由客戶選擇具體策略,而狀態模式只需要傳遞狀態不需要知道作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章