设计模式系列——策略模式

178 阅读1分钟

原创:花括号MC(微信公众号:huakuohao-mc),欢迎分享,转载请保留出处。

策略模式常用于一个对象的行为在运行时有多个不同的策略和算法。

举个例子

可以通过实现一个加、减、乘三种不用策略的运算,通过该示例演示策略模式。

先来看一下UML

strategy.png

来看一下代码如何实现

先来定义一个策略接口

public interface Strategy {
    int doOperation(int num1, int num2);
}

分别定义具体的加、减、乘策略,实现策略接口

定义加法策略

public class OperationAdd implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

减法和乘法策略大同小异,篇幅原因掠过。

定义一个Context方法,根据不同策略执行不同的行为

public class Context {

    private Strategy strategy;
    public Context(Strategy strategy){
        this.strategy = strategy;
    }

    //执行不同的策略
    public int executeStrategy(int num1, int num2){
        return strategy.doOperation(num1,num2);
    }
}

来看一下客户端如何使用

public class StrategyPatternDemo {
    public static void main(String[] args){
        Context context = new Context(new OperationAdd());
        System.out.println("10 + 5 = " + context.executeStrategy(10,5));

        context = new Context(new OperationSubstract());
        System.out.println("10 - 5 = " + context.executeStrategy(10,5));

        context = new Context(new OperationMultiply());
        System.out.println("10 * 5 = " + context.executeStrategy(10,5));
    }
}

总结

策略模式是行为模式之一,策略模式是用来封装算法的,实践过程中,不仅可以封装算法,任何类型的规则都可以封装。

本文参考 www.tutorialspoint.com/design_patt…