zoukankan      html  css  js  c++  java
  • C# 设计模式(22)策略模式

    策略模式

    代码实现:

    计算服务类:

    namespace StrategyPattern.Service
    {
        public interface ICalculation
        {
           public int Calculate(int data1,int data2);
        }
        public class Plus:ICalculation
        {
            public int Calculate(int data1, int data2)
            {
                int ret= data1 + data2;
                Console.WriteLine($"{data1}+{data2}={ret}");
                return ret;
            }
        }
        public class Subtract : ICalculation
        {
            public int Calculate(int data1, int data2)
            {
                int ret = data1 - data2;
                Console.WriteLine($"{data1}-{data2}={ret}");
                return ret;
            }
        }
        public class Multiply : ICalculation
        {
            public int Calculate(int data1, int data2)
            {
                int ret = data1 * data2;
                Console.WriteLine($"{data1}*{data2}={ret}");
                return ret;
            }
        }
        public class Division:ICalculation
        {
            public int Calculate(int data1, int data2)
            {
                int ret = data1 / data2;
                Console.WriteLine($"{data1}/{data2}={ret}");
                return ret;
            }
        }
    }

    计算上下文:

        public class CalculateContext
        {
            private readonly ICalculation _calculation;
            private readonly int _data1;
            private readonly int _data2;
    
            public CalculateContext(ICalculation calculation, int data1,int data2)
            {
                _calculation = calculation;
                _data1 = data1;
                _data2 = data2;
            }
    
            public void DoAction()
            {
                _calculation.Calculate(_data1, _data2);
            }
        }

    代码调用:

        class Program
        {
            static void Main(string[] args)
            {
                int data1, data2;
                Console.WriteLine("整数二元运算...");
                Console.WriteLine("请输入第一个整数:");
                while (!int.TryParse(Console.ReadLine(), out data1))
                {
                    Console.WriteLine("请重新输入第一个整数:");
                }
    
                Console.WriteLine("请选择运算符:+ - * /");
                string[] ops =new string[] {"+","-","*","/"};
                string op="";
                op= Console.ReadLine();
                while (!ops.Contains(op))
                {
                    Console.WriteLine("请重新输入运算符:+ - * / ");
                    op = Console.ReadLine();
                }
    
                Console.WriteLine("请输入第二个整数:");
                while (!int.TryParse(Console.ReadLine(), out data2))
                {
                    Console.WriteLine("请重新输入第二个整数:");
                }
    
                ICalculation calculation = null;
                if (op == "+")
                {
                     calculation = new Plus();
                }
                else if (op == "-")
                {
                    calculation = new Subtract();
                }
                else if (op == "*")
                {
                    calculation = new Multiply();
                }
                else if (op == "/")
                {
                    calculation = new Division();
                }
                CalculateContext calculateContext = new CalculateContext(calculation,data1, data2);
                calculateContext.DoAction();
            }
        }

    结果:

  • 相关阅读:
    ubuntu下minicom和usb串口转接
    linux下 驱动模块编译步骤
    linux下的压缩解压命令
    GitLab 数据备份和恢复
    GitLab 项目创建后地址由Localhost改为实际IP的方法
    GitLab-Runner 安装配置
    GitLab 的安装及汉化
    用yum rpm 快速安装zabbix agent
    RabbitMQ的用户管理方法
    Linux下安装部署RabbitMQ
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14103255.html
Copyright © 2011-2022 走看看