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

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

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

类视图:

 

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

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、减类

1
2
3
4
5
6
7
8
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 @   帅呆了的帅哥哥  阅读(61)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示