策略模式

策略模式属于行为型模式,可以将算法和调用者独立开。

意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。

interface Strategy{
    int operate(int a,int b);
}

class AddStrategy implements Strategy{

    @Override
    public int operate(int a,int b) {
        return a + b;
    }
}

class SubStrategy implements Strategy{

    @Override
    public int operate(int a,int b) {
        return a - b;
    }
}

class Context{
    private Strategy strategy;
	
    public Context(Strategy strategy){
        this.strategy = strategy;
    }
	
    //设置策略
    public void setStrategy(Strategy strategy){
        this.strategy = strategy;
    }

	//执行策略
    public int executeStrategy(int a,int b){
        return strategy.operate(a, b);
    }
}

public class StrategyModel {

    public static void main(String[] args) {
        Context context = new Context(new AddStrategy());
        System.out.println(context.executeStrategy(10, 5));
        context.setStrategy(new SubStrategy());
        System.out.println(context.executeStrategy(10, 5));
    }

}

 


版权声明:本文为pao___pao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。