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

    1.代码结构

    2.Operation.cs
    using System;
    
    namespace CalculatorDemoWithMindOfObject
    {
        public class Operation
        {
            public double NumberA { get; set; }
            public double NumberB { get; set; }
    
            public virtual double GetResult()
            {
                double result = 0;
                return result;
            }
        }
    
        public class OperationAdd : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumberA + NumberB;
                return result;
            }
        }
    
        public class OperationSub : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumberA - NumberB;
                return result;
            }
        }
    
        public class OperationMul : Operation
        {
            public override double GetResult()
            {
                double result = 0;
                result = NumberA * NumberB;
                return result;
            }
        }
    
        public class OperationDiv : Operation
        {
            public override double GetResult()
            {
                if (NumberB == 0)
                {
                    throw new Exception("除数不能为0");
                }
                double result = 0;
                result = NumberA / NumberB;
                return result;
            }
        }
    }
    3.OperationFactory.cs
    namespace CalculatorDemoWithMindOfObject
    {
        /// <summary>
        ///     运算类工厂(简单工厂模式)
        /// </summary>
        public class OperationFactory
        {
            public static Operation CreateOperation(string operatorInfo)
            {
                Operation operation = null;
                switch (operatorInfo)
                {
                    case "+":
                        operation = new OperationAdd();
                        break;
    
                    case "-":
                        operation = new OperationSub();
                        break;
    
                    case "*":
                        operation = new OperationMul();
                        break;
    
                    case "/":
                        operation = new OperationDiv();
                        break;
                }
                return operation;
            }
        }
    }
    4.Program.cs
    using System;
    
    namespace CalculatorDemoWithMindOfObject
    {
        /// <summary>
        ///     使用面向对象三大特征(封装、继承、多态)实现的计算器
        ///     LDH @ 2019-2-12
        /// </summary>
        class Program
        {
            static void Main()
            {
                Console.Title = "使用面向对象三大特征,实现简单的计算器功能";
    
                Operation op = OperationFactory.CreateOperation("+");
                op.NumberA = 10;
                op.NumberB = 20;
    
                double result = op.GetResult();
                Console.WriteLine("运算结果:" + result);
    
                Console.ReadKey();
            }
        }
    }
    5.运行结果

  • 相关阅读:
    [NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
    BZOJ 2763: [JLOI2011]飞行路线(最短路)
    BZOJ 1083: [SCOI2005]繁忙的都市(MST)
    USACO Seciton 5.4 Canada Tour(dp)
    HDOJ 3415 Max Sum of Max-K-sub-sequence(单调队列)
    POJ2823 Sliding Window(单调队列)
    USACO Section 5.4 TeleCowmunication(最小割)
    [IOI1996] USACO Section 5.3 Network of Schools(强连通分量)
    USACO Section 5.3 Milk Measuring (IDDFS+dp)
    USACO Section 5.3 Big Barn(dp)
  • 原文地址:https://www.cnblogs.com/LifeDecidesHappiness/p/10368123.html
Copyright © 2011-2022 走看看