策略模式

一:策略模式定義(compator接口比較):

定義一組算法,將每一個算法封裝起來,並且它們之間可以互換

二:策略模式特點:

缺點是調用者需要知道所有的策略,才能準確的調用。優點是一旦知道了具體的策略之後,可以自由的切換。主要由抽象策略角色,具體策略角色,策略上下文角色和測試類四部分組成。策略上下文將抽象策略角色通過構造函數的形式注入,這樣在測試的時候就可以接收指定的任何具體策略角色。

三:策略模式實現:

抽象的策略角色:
public interface IStrategy {
	public void algorithmMethod();
}
具體的策略角色:
public class ConcreteStrategy implements IStrategy {
	@Override
	public void algorithmMethod() {
		System.out.println("具體的策略實現");
	}
}
策略上下文角色:策略上下文和被封裝的策略類不用是同一個接口,若是同一個接口則就是靜態代理模式
	private IStrategy iStrategy;
	public StrategyContext(IStrategy iStrategy) {
		this.iStrategy = iStrategy;
	}
	// 調用策略接口的方法
	public void ContextMethod() {
//這裏也可以添加策略自定義的邏輯
		this.iStrategy.algorithmMethod();
	}
}
測試類:
public class StrategyTest {
	public static void main(String[] args) throws InterruptedException {
		// 策略上下文擁有一個真正的策略角色
		StrategyContext strategyContext = new StrategyContext(
				new ConcreteStrategy1());
		// 策略上下文調用的方法實質是調用具體策略角色的方法
		strategyContext.ContextMethod();
	}

 

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