策略模式

定义: 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。
优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。

namespace ConsoleApp1
{
    //定义抽象策略
    public interface IStrategy
    {
         float calc(int num1, int num2);
    }
    //定义具体策略
    //加法
    public class AddStrategy : IStrategy
    {
        public float calc(int num1, int num2)
        {
            return num1 + num2;
        }
    }
    //减法
    public class SubstractStrategy : IStrategy
    {
        public float calc(int num1, int num2)
        {
            return num1 - num2;
        }
    }
    //乘法
    public class MultiplicationStrategy : IStrategy
    {
        public float calc(int num1, int num2)
        {
            return num1 * num2;
        }
    }
    //除法
    public class DivisionStrategy : IStrategy
    {
        public float calc(int num1, int num2)
        {
            return num1 / num2;
        }
    }
    //处理环境
    public class Environment
    {
        private IStrategy strategy;
        public Environment(IStrategy strategy)
        {
            this.strategy = strategy;
        }
        public float calculate(int a, int b)
        {
            return strategy.calc(a, b);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Environment environment = new Environment(new AddStrategy());
            float result = environment.calculate(20, 5);
            Console.WriteLine("计算结果:" + result);

            Environment environment1 = new Environment(new SubstractStrategy());
            float result1 = environment1.calculate(20, 5);
            Console.WriteLine("计算结果:" + result1);

            Environment environment2 = new Environment(new MultiplicationStrategy());
            float result2 = environment2.calculate(20, 5);
            Console.WriteLine("计算结果:" + result2);

            Environment environment3 = new Environment(new DivisionStrategy());
            float result3 = environment3.calculate(20, 5);
            Console.WriteLine("计算结果:" + result3);
        }
    }
}

相关推荐

  1. ·策略模式

    2024-04-03 12:18:06       35 阅读
  2. 策略模式

    2024-04-03 12:18:06       18 阅读
  3. 设计模式——策略模式

    2024-04-03 12:18:06       30 阅读
  4. 设计模式-策略模式

    2024-04-03 12:18:06       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-03 12:18:06       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-03 12:18:06       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-03 12:18:06       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-03 12:18:06       20 阅读

热门阅读

  1. 策略模式详解+代码案例

    2024-04-03 12:18:06       12 阅读
  2. 洛谷 P1747 好奇怪的游戏

    2024-04-03 12:18:06       18 阅读
  3. 非关系型数据库Redis部署与常用命令

    2024-04-03 12:18:06       41 阅读
  4. 用 ipset 和 iptables 保护 sip 端口

    2024-04-03 12:18:06       15 阅读
  5. TCP

    TCP

    2024-04-03 12:18:06      16 阅读
  6. Docker入门

    2024-04-03 12:18:06       15 阅读