zoukankan      html  css  js  c++  java
  • 【大话设计模式读书笔记——简单工厂模式】

    简单工厂

    普通的工厂方法模式通常伴随着对象的具体类型与工厂具体类型的一一对应,客户端代码根据需要选择合适的具体类型工厂使用。然而,这种选择可能包含复杂的逻辑。这时,可以创建一个单一的工厂类,用以包含这种选择逻辑,根据参数的不同选择实现不同的具体对象。这个工厂类不需要由每个具体产品实现一个自己的具体的工厂类,所以可以将工厂方法设置为静态方法。 而且,工厂方法封装了对象的创建过程。如果创建过程非常复杂(比如依赖于配置文件或用户输入),工厂方法就非常有用了。 维基百科-简单工厂

    简单工厂实现计算机

        /// <summary>
        /// 运算基类
        /// </summary>
        public abstract class Operation
        {
            public double NumA { get; set; }
            public double NumB { get; set; }
    
            public abstract double GetResult();
    
        }
    
        /// <summary>
        /// 操作工厂
        /// </summary>
        public class OperationFactory
        {
            public static Operation CreateOperation(string operate)
            {
                switch (operate)
                {
                    case "+":
                        return new OperationAdd();
                    case "-":
                        return new OperationSub();
                    case "*":
                        return new OperationMul();
                    case "%":
                        return new OperationDiv();
                    default:
                        throw new ArgumentException("无效的运算符");
                }
            }
        }
    
        #region 加减乘除实现类
    
        public class OperationAdd : Operation
        {
            public override double GetResult()
            {
                return NumA + NumB;
            }
        }
        public class OperationSub : Operation
        {
            public override double GetResult()
            {
                return NumA - NumB;
            }
        }
        public class OperationMul : Operation
        {
            public override double GetResult()
            {
                return NumA * NumB;
            }
        }
        public class OperationDiv : Operation
        {
            public override double GetResult()
            {
                return NumA % NumB;
            }
        }
    
        #endregion
    
     static void Main(string[] args)
            {
                //调用
                var operation = OperationFactory.CreateOperation("*");
                operation.NumA = 1.5d;
                operation.NumB = 1.75d;
                var result = operation.GetResult();
                Console.WriteLine(result);
                Console.ReadLine();
            }
    
  • 相关阅读:
    CocoaPods的基本使用方法
    【STM32】电能表抄表功能实现|自学笔记
    【STM32】串口收发驱动Drv_Uart|学习笔记
    【STM32】SYSCLK配置|学习笔记
    【stm32】的PWM外设|学习笔记
    【JavaScript】setAttribute在添加事件时失效解决办法
    三步建立自己域名的主页,Github Pages功能简明手册
    Java生成UUID 与 MySQL数据库如何生成uuid数据
    利用Excel办公软件快速拼接SQL
    Java实现几种常见排序方法
  • 原文地址:https://www.cnblogs.com/q975261413/p/8074772.html
Copyright © 2011-2022 走看看