Strategy Design Pattern 策略设计模式

本文介绍了策略设计模式的概念及其应用场景,并通过一个具体的Java示例详细解释了如何使用该模式来实现算法的选择与替换,使得代码更加灵活且易于维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Strategy Design Pattern是什么?

策略设计模式是行为模式的一种。它定义了一组封装好的算法,可以用来执行某种特定的行为。
在策略设计模式中国年,我们创建代表不同策略不同上下文的类,所选择的策略模式对象选取不同的算法执行。

2. 策略设计模式UML图

这里写图片描述
Context中包含着 Strategy 对象。上下文的设置可能是任何需要变化行为的情形–比如需要不同排序算法的例子等。
Strategy 被设计成一种接口存在,而ConcreteStrategy可以在Context中自由切换,不会影响Context的实现。

3. 策略设计模式Demo

package com.fqyuan.thinking;

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

class ConcreteStrategyAdd implements Strategy {

    @Override
    public int operate(int num1, int num2) {
        return num1 + num2;
    }

}

class ConcreteStrategySubtract implements Strategy {

    @Override
    public int operate(int num1, int num2) {
        return num1 - num2;
    }
}

class ConcreteStrategyMulti implements Strategy {
    @Override
    public int operate(int num1, int num2) {
        return num1 * num2;
    }
}

class Context {
    private Strategy strategy;

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

    public int executeStrategy(int num1, int num2) {
        return strategy.operate(num1, num2);
    }
}

public class StrategyDemo {

    public static void main(String[] args) {
        int num1 = 22, num2 = 4;
        Context context1 = new Context(new ConcreteStrategyAdd());
        int result1 = context1.executeStrategy(num1, num2);
        System.out.println(num1 + " + " + num2 + " = " + result1);
        Context context2 = new Context(new ConcreteStrategySubtract());
        int result2 = context2.executeStrategy(num1, num2);
        System.out.println(num1 + " - " + num2 + " = " + result2);
        Context context3 = new Context(new ConcreteStrategyMulti());
        int result3 = context3.executeStrategy(num1, num2);
        System.out.println(num1 + " * " + num2 + " = " + result3);
    }

}
//Running result:
22 + 4 = 26
22 - 4 = 18
22 * 4 = 88
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值