设计模式-行为型模式-策略模式

策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。[DP]

复制代码
//首先,我们定义一个策略接口:


public interface Strategy {
    public int doOperation(int num1, int num2);
}
//接着,我们创建实现了策略接口的具体策略类:


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

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

public class OperationMultiply implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 * num2;
    }
}
//然后,我们创建一个上下文类,它接受一个策略对象并使用该策略对象执行操作:


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 OperationSubtract());    
        System.out.println("10 - 5 = " + context.executeStrategy(10, 5));

        context = new Context(new OperationMultiply());    
        System.out.println("10 * 5 = " + context.executeStrategy(10, 5));
    }
}
相关推荐
蓝瑟7 小时前
告别重复造轮子!业务组件多场景复用实战指南
前端·javascript·设计模式
Arva .10 小时前
讲一下 Spring 中用到的设计模式
java·spring·设计模式
繁华似锦respect11 小时前
lambda表达式中的循环引用问题详解
java·开发语言·c++·单例模式·设计模式·哈希算法·散列表
星月IWJ14 小时前
领域驱动设计学习
java·学习·设计模式
_dindong15 小时前
Linux网络编程:Reactor反应堆模式
linux·服务器·网络·设计模式·php
雨中飘荡的记忆15 小时前
Step Builder模式实战
java·设计模式
Eren7Y琳16 小时前
开箱即用构建应用环境:openEuler易获得性深度验证
redis·设计模式·架构
Unstoppable2216 小时前
八股训练营第 39 天 | Bean 的作用域?Bean 的生命周期?Spring 循环依赖是怎么解决的?Spring 中用到了那些设计模式?
java·spring·设计模式
闲人编程17 小时前
微服务API网关设计模式
python·缓存·微服务·设计模式·系统安全·api·codecapsule
__万波__17 小时前
二十三种设计模式(八)--装饰器模式
java·设计模式·装饰器模式