zoukankan      html  css  js  c++  java
  • 设计模式之简单工厂模式

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

    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

  • 相关阅读:
    HDUoj(1002)A + B Problem II
    HIT Summer 20180731
    Windows10下python3.5对维基百科语料用word2vec进行训练寻找同义词相似度
    关键词抽取
    win10+python遇到:Using TensorFlow backend.错误
    Windows下Python3.5+numpy+keras+tesorflow的环境配置
    常用的一些序列号
    Umbraco扩展开发
    Umbraco Content属性
    Windows查看端口占用
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/8031268.html
Copyright © 2011-2022 走看看