設計模式學習-策略模式

      策略模式(Strategy模式)是行爲模式之一,它對一系列的算法加以封裝,爲所有算法定義一個抽象的算法接口,並通過繼承該抽象算法接口對所有的算法加以封裝和實現,具體的算法選擇交由客戶端決定(策略)。Strategy模式主要用來平滑地處理算法的切換 。切換算法不會影響使用算法的客戶。

下面是在 程傑《大話設計模式》中截的圖(書寫的特別有意思),來描述策略模式的結構

 

Strategy 是定義一個算法的公共接口;

然後算法A、B、C  implements Strategy 實現具體的算法;

Context維護一個Strategy對象的引用,是策略的外部封裝類,或者說策略的容器類。根據不同策略執行不同的行爲。

 

下面來看代碼:

1、Strategy接口

public interface Strategy {

	//加密
	public void encrypt();
}

2、具體算法實現類

public class MD5Strategy implements Strategy{

	public void encrypt() {
		System.out.println("執行MD5加密");
	}

}






public class MDSStrategy implements Strategy{

	public void encrypt() {
		System.out.println("執行MDS加密");
	}

}

 

3、上下文對象

public class Context {
	private Strategy strategy;
	public Context(Strategy strategy) {
		this.strategy = strategy;
	}
	
	public void encrypt() {
		this.strategy.encrypt();
	}
}

4、客戶端使用

public class MainClass {
	public static void main(String[] args) {
//		客戶端確定算法
		Context context = new Context(new MDSStrategy());
		context.encrypt();
	}
}

 

總結:策略模式首先確定一個算法家族。他們都有一個共同的行爲,但是達成行爲的動作不一樣,客戶度通過策略的上下文的外部封裝類來決定引用哪一種算法。

下面是程傑的 大鳥總結:

 

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