策略模式

策略模式:封裝了一系列的算法,用戶不直接與這些算法打交道,獨立於使用用戶而變化


策略模式的三個組成條件:

1.抽象的策略角色

2.具體的策略角色

3.環境角色,持有一個策略角色的引用,爲用戶服務的類


下面演示一個Demo:

1.抽象的策略角色

public interface Strategy {

	public void print();
}

2.幾個實現了這個接口的類

public class StrategyA implements Strategy{

	@Override
	public void print() {

		System.out.println("StrategyA");
	}
}
public class StrategyB implements Strategy{

	@Override
	public void print() {

		System.out.println("StrategyB");
	}
}
public class StrategyC implements Strategy{

	@Override
	public void print() {

		System.out.println("StrategyC");
	}
}

3.環境角色Context,給用戶調用的

public class Context {

	Strategy strategy;
	
	public Context() {
		
	}
	
	public Context(Strategy strategy) {
		
		this.strategy = strategy;
	}
	
	public void contextPrint() {
		
		strategy.print();
	}
}

4.StartUp

public class StartUp {

	public static void main(String[] args) {
		
		Context context;
		
		context = new Context(new StrategyA());
		context.contextPrint();
	
		context = new Context(new StrategyB());
		context.contextPrint();
		
		context = new Context(new StrategyC());
		context.contextPrint();
	}
}

策略模式的優點是將算法分開來,獨立開來,如果有新的算法要加入的話可以新建一個策略,去繼承那個抽象的策略類,這樣就減少了很多的代碼量,確定點是用戶必須知道你有那樣算法才能去調用那個算法,這樣的用戶體驗不咋的。


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