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

策略模式(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));
    }
}
相关推荐
朱一头zcy14 分钟前
设计模式入门:最简单的模板方法模式
笔记·设计模式·模板方法模式
君主黑暗5 小时前
设计模式-观察者模式
观察者模式·设计模式
砍光二叉树5 小时前
【设计模式】结构型-组合模式
设计模式·组合模式
砍光二叉树6 小时前
【设计模式】结构型-享元模式
设计模式·享元模式
电子科技圈6 小时前
SmartDV展示汽车IP解决方案以赋能智驾创芯并加速规模化普及
嵌入式硬件·设计模式·硬件架构·软件工程·软件构建·设计规范
砍光二叉树7 小时前
【设计模式】结构型-桥接模式
设计模式·桥接模式
姓蔡小朋友7 小时前
Agent Skill设计模式
开发语言·javascript·设计模式
砍光二叉树8 小时前
【设计模式】结构型-外观模式
设计模式·外观模式
zhaoshuzhaoshu8 小时前
设计模式6大原则详细对比(含场景举例)
设计模式·设计语言
砍光二叉树8 小时前
【设计模式】行为型-观察者模式
java·观察者模式·设计模式