設計模式總結(2)
阿新 • • 發佈:2018-11-03
設計模式總結(2)
策略模式
如果寫了一個介面的多個實現類,而這些實現類功能相似,這個時候若還使用傳統的類似if…else…的方法進行判斷,其效率會非常低下。可以將這些功能相似的實現類封裝起來,使它們可以相似替換。這就是策略模式。
策略模式是一種行為型模式,類的行為或者演算法可以在執行時更改。
抽象策略
通常情況下為一個介面,當各個實現類中存在著重複的邏輯時,則使用抽象類來封裝這部分公共的程式碼,此時,策略模式看上去更像是模版方法模式。
interface Strategy {
public void doSomeThing();
}
具體策略
具體策略角色通常由一組封裝了演算法的類來擔任,這些類之間可以根據需要自由替換。
class ConcreteStrategy1 implements Strategy {
@Override
public void doSomeThing() {
System.out.println("具體策略1");
}
}
class ConcreteStrategy2 implements Strategy {
@Override
public void doSomeThing() {
System.out.println("具體策略2");
}
}
封裝類
也叫上下文,對策略進行二次封裝,目的是避免高層模組對策略的直接呼叫。
class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void execute() {
strategy.doSomeThing();
}
}
測試
public class Client {
public static void main(String[] args){
Context context;
System. out.println("-----執行策略1-----");
context = new Context(new ConcreteStrategy1());
context.execute();
System.out.println("-----執行策略2-----");
context = new Context(new ConcreteStrategy2());
context.execute();
}
}