工厂模式——简单工厂模式

工厂模式顾明思义就是创建产品,根据产品是具体的产品还是具体的工厂可以分为简单工厂模式和抽象工厂模式。

该模式用于封装和管理对象的创建,是一种创建型模式。

类视图:

 

使用加减乘除运算来看下工厂模式:

1、运算类:Operation

 public class Operation
    {
        /// <summary>
        /// 
        /// </summary>
        public decimal NumberA { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public decimal NumberB { get; set; }

        /// <summary>
        /// 虚方法
        /// </summary>
        /// <returns></returns>
        public virtual decimal GetResult()
        {
            var result = 0;
            return result;
        }

    }

加减乘除 都需要继承 这个运算类:

2、加类

public class OperationAdd : Operation
{
    public override decimal GetResult()
    {
        var result = NumberA + NumberB;
        return result;
    }
}            

我们看到 OperationAdd 继承 Operation

3、减类

 public class OperationSub : Operation
    {
        public override decimal GetResult()
        {
            var result = NumberA - NumberB;
            return result;
        }
    }

我们看到 OperationSub 继承 Operation 

乘除类也都是同样的方式 通过继承来实现;

工厂模式我们必须要建造一个工厂类:

public class OperationFactory
    {
        /// <summary>
        /// 简单工厂模式
        /// </summary>
        /// <param name="operation"></param>
        /// <returns></returns>
        public Operation CreateOperation(string operation)
        {
            Operation pore = null;
            switch (operation)
            {
                case "+":
                    pore = new OperationAdd();
                    break;
                case "-":
                    pore = new OperationSub();
                    break;
                case "*":
                    pore = new OperationMul();
                    break;
                case "/":
                    pore = new OperationDiv();
                    break;
            }
            return pore;
        }
    }

创建一个工厂类,根据不同的参数实现不同的方法;

Operation 是父类,加减乘除是子类,所有子类都继承了父类的属性,和方法

看下Main方法:

     static void Main(string[] args)
        {
            #region 简单工厂模式
            Console.WriteLine("简单工厂模式:");
            Console.WriteLine("控制台计算器实现加减乘除");
            Console.WriteLine("请输入计算数字");
            var numberA = Console.ReadLine();
            Console.WriteLine("运算符 + - * /");
            var operation = Console.ReadLine();
            Console.WriteLine("请输入计算数字");
            var numberB = Console.ReadLine();
            try
            {
                var result = _operationFactory.CreateOperation(operation);
                decimal.TryParse(numberA, out decimal decimalA);
                result.NumberA = decimalA;
                decimal.TryParse(numberB, out decimal decimalB);
                result.NumberB = decimalB;
                var operationValue = result.GetResult();
                Console.WriteLine(operationValue);
            }
            catch (Exception e)
            {
                Console.WriteLine("输入内容有误");
            }
            Console.WriteLine("Hello World!");

            #endregion
        }

由此得出我们创建一个工厂通过工厂去根据不同的类型实现不同的结果:这就是简单工厂模式

 
posted @ 2021-06-22 16:55  帅呆了的帅哥哥  阅读(68)  评论(0)    收藏  举报