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

策略模式(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));
    }
}
相关推荐
geovindu4 分钟前
rust: Simple Factory Pattern(续)
后端·设计模式·rust·简单工厂模式·创建型模式
喜欢coding的谢同学27 分钟前
Go语言常用设计模式基础和实践案例介绍
开发语言·设计模式·golang
sarasuki18 小时前
Agent 的记忆有几种?你的名字是?
人工智能·设计模式·agent
geovindu1 天前
rust: Flyweight Pattern
开发语言·后端·设计模式·rust·享元模式·结构型模式
沫璃染墨2 天前
《Linux工程实践篇(一):认识设计模式——从日志系统看策略模式》
linux·c++·安全·设计模式·策略模式
十六宿舍2 天前
【软件设计模式-第一课:基础知识了解】
设计模式·架构·面向对象·软件架构
AIex-YH2 天前
工艺降污:把环保账前移到发酵罐——源头减量清单
制造·策略模式
geovindu2 天前
rust: Facade Pattern
开发语言·后端·设计模式·rust·外观模式
AIex-YH2 天前
资源化利用全景:饲料化/肥料化/能源化/材料化的能走与不能走
制造·策略模式
怕浪猫2 天前
面试官让我手写一个 Tool Use,我用了 3 种方案
设计模式·面试·程序员