1. 程式人生 > >設計模式總結(2)

設計模式總結(2)

設計模式總結(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(); } }