Java設計モード--ポリシーモード

1051 ワード

また、クラスの動作またはそのアルゴリズムは、実行時に変更できる動作型モードの1つにも属します.単純な実装
環境クラス(対外的に統合インタフェースを提供)
public class Context {
    private Strategy strategy;

    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }

    public int request(int req) {
        return state.doAction(req);
    }
}

ポリシーインタフェース
interface Strategy {
    int doAction(int req);
}

具体的なポリシー
public class AddStrategy implements Strategy{

    @Override
    public int doAction(int req) {
        return req + req;
    }
}

public class MultiStrategy implements Strategy{
    @Override
    public int doAction(int req) {
        return req * req;
    }
}

テストクラス
    public static void main(String[] args) {
        Strategy strategy= new Strategy();
        strategy.setStrategy(new AddStrategy ());
        System.out.println(context.request(10));
        strategy.setStrategy(new MultiStrategy ());
        System.out.println(context.request(10));
    }