• 设计模式之简单工厂模式


    简单工厂模式实现计算器功能:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace 简单工厂模式
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                Operation operation = OperationFactory.CreateOperation("/");
                operation.param1 = 4;
                operation.param2 = 0;
                Console.WriteLine(operation.GetResult());
                Console.ReadKey();
            }
    
            /// <summary>
            /// 操作类的父类
            /// </summary>
            public abstract class Operation
            {
                public double param1 { get; set; }
                public double param2 { get; set; }
    
                public abstract  double GetResult();
              
            }
    
            /// <summary>
            /// 加法类
            /// </summary>
            public class AddOperation:Operation
            {
                public override double GetResult()
                {
                    return param1 + param2;
                }
            }
            /// <summary>
            /// 减法类
            /// </summary>
            public class MinusOperation:Operation
            {
                public override double GetResult()
                {
                    return param1 - param2;
                }
            }
            /// <summary>
            /// 乘法类
            /// </summary>
            public class MulOperation:Operation
            {
                public override double GetResult()
                {
                    return param1 * param2;
                }
            }
            /// <summary>
            /// 除法类
            /// </summary>
            public class DelOperation:Operation
            {
                public override double GetResult()
                {
                   if(param2==0)
                   {
                       throw new Exception("除数不能为0");
                   }
                   return param1 / param2;
                }
            }
    
            /// <summary>
            /// 工厂类,管理所有的操作,并且向外提供访问的方法
            /// </summary>
            public class OperationFactory
            {
                /// <summary>
                /// 根据用户提供的操作符去创建对应的类
                /// </summary>
                /// <param name="operationName"></param>
                /// <returns></returns>
                public static Operation CreateOperation(string operationName)
                {
                    Operation operation = null;
                    switch(operationName)
                    {
                        case "+":
                            operation = new AddOperation();
                            break;
                        case "-":
                            operation = new MinusOperation();
                            break;
                        case "*":
                            operation = new MulOperation();
                            break;
                        case "/":
                            operation = new DelOperation();
                            break;
                    }
                    return operation;
                }
            }
        }
    }
    

     要点:简单工厂模式只是解决了创建对象的问题,而且工厂本身是不轻易修改的。2

  • 相关阅读:
    PHP探针
    服务器fsockopen函数和pfsockopen函数开启及作用
    WP SMTP插件为啥我一直设置的不对?
    用WP SMTP插件实现邮件发送功能
    openssl基本原理 + 生成证书 + 使用实例
    解决wordpress无法发送邮件的问题|配置好WP-Mail-SMTP的前提
    使用 openssl 生成证书
    如何使用OpenSSL工具生成根证书与应用证书
    OpenSSL 给自己颁发根证书,由根证书签发下级证书的步骤。
    ARMCC和GCC编译ARM代码的软浮点和硬浮点问题【转】
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/8031268.html
Copyright © 2020-2023  润新知