C# 设计模式 行为型模式 之 策略模式

在策略模式 中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。

现实例子:旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略

优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。

下面通过 示例 演示 策略模式:

namespace 策略模式
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Operation operationAdd = new Operation(new Addition());
            Console.WriteLine("值为:"+ operationAdd.ExecuteStrategy(10, 20));
            Operation operationSub = new Operation(new Subtraction());
            Console.WriteLine("值为:" + operationSub.ExecuteStrategy(60, 10));
            /*
             * 控制台:
             * 值为:30
                值为:50
             */
        }
    }
    //策略抽象
    public interface Strategy
    {
        int Operate(int num1, int num2);
    }
    //实体类
    public class Addition : Strategy
    {
        public int Operate(int num1, int num2)
        {
            return num1 + num2;
        }
    }
    //实体类
    public class Subtraction : Strategy
    {
        public int Operate(int num1, int num2)
        {
            return num1 - num2;
        }
    }
    //执行 策略
    public class Operation
    {
        private Strategy strategy;

        public Operation(Strategy strategy)
        {
            this.strategy = strategy;
        }
        public int ExecuteStrategy(int num1, int num2)
        {
            return strategy.Operate(num1, num2);
        }
    }
}

缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值