策略模式的概念圖
策略模式源來(lái)
在生活中,實(shí)現(xiàn)一個(gè)目標(biāo)有多種方式方法,也就是有多種策略。可以用if-else來(lái)簡(jiǎn)單的判斷,但是當(dāng)條件變多,并且條件變復(fù)雜后,耦合會(huì)十分的高,邏輯混亂不夠清晰。
所以就產(chǎn)生了策略模式。
首先有一個(gè)上下文類Context,這個(gè)類持有一個(gè)策略的類引用 Strategy,并且有一個(gè)set方法。
public Class Context{
Strategy strategy;
public void Context(Strategy strategy){
this.strategy=strategy;
}
public void doSomething(){
strategy.doSomething();
}
}
然后將Strategy當(dāng)做接口類,聲明必須要實(shí)現(xiàn)的方法doSomething(),實(shí)現(xiàn)它的多個(gè)策略子類。
public inteface Strategy{
public void doSomething();
}
public Class OneStrategy implement Strategy{
public void doSomething(){
System.out.println("one");
}
}
public Class TwoStrategy implement Strategy{
public void doSomething(){
System.out.println("two");
}
}
最后使用策略O(shè)neStrategy來(lái)解決問(wèn)題。
public void main(){
Context context=new Context(new OneStrategy);
context.doSomething();
}
若要是用策略TwoStrategy,將TwoStrategy 傳遞進(jìn)Context中即可。
核心思路是,持有接口引用,使用實(shí)現(xiàn)接口的具體類來(lái)覆蓋其方法,可擴(kuò)展性和維護(hù)性極強(qiáng)。