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

    故事:代码无错就是优?

    简单工厂模式又称为静态工厂方法模式(static factory method ),它不是GOF(Gang of Four, 四人组)所讲的23种设计模式之一,但却是实际中经常使用的方法之一。

    实现:定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常具有相同的父类。由于在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法,它属于类创建型模式。

    /// <summary>  
    /// 运算类工厂  
    /// </summary>  
    public class OperationFactory  
    {  
        public static Operation createOperate(string operate)  
        {  
            Operation oper = null;  
            switch (operate)  
            {  
                case "+":  
                    {  
                        oper = new OperationAdd();  
                        break;  
                    }  
                case "-":  
                    {  
                        oper = new OperationSub();  
                        break;  
                    }  
                case "*":  
                    {  
                        oper = new OperationMul();  
                        break;  
                    }  
                case "/":  
                    {  
                        oper = new OperationDiv();  
                        break;  
                    }  
                case "sqr":  
                    {  
                        oper = new OperationSqr();  
                        break;  
                    }  
                case "sqrt":  
                    {  
                        oper = new OperationSqrt();  
                        break;  
                    }  
                case "+/-":  
                    {  
                        oper = new OperationReverse();  
                        break;  
                    }  
            }  
            return oper;  
        }  
    }  

    优点:

    1. 工厂类包含必要的判断逻辑,可以决定在什么时候创建一个产品类的实例,客户端可以免除直接创建对象的职责,而仅仅 ”消费“ 产品, 简单工厂模式实现了对象创建和使用的分离

    2. 客户端无需知道所创建的具体产品类的类名,只需要知道产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以在一定程度减少使用者的记忆量。

    缺点:

    1. 由于工厂类集中了所有产品的创建逻辑,职责过重,一旦不能正常工作,整个系统都要受到影响。

    2. 使用简单工厂模式势必会增加系统中类的个数(引入了新的工厂类),增加了系统的复杂度和理解难度。

    3. 系统扩展困难,一旦增加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

    4. 简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承体系的等级结构。

    适用场景:

    1. 工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。

    2. 客户端只知道传入工厂类的参数,对于如何创建对象并不关心。

  • 相关阅读:
    SpringCloud Alibaba整合Sentinel
    Jmter入门教程
    惊!!!笔记本外接显示器,显示器界面不能充满全屏
    js-使用attr()方法
    关于JS的assign() 方法
    《转》webpack+vue+vueRouter模块化构建完整项目实例超详细步骤(附截图、代码、入门篇)
    元素水平垂直居中的四种方式(别人文章)
    关于截取字符串substr和substring两者的区别
    JavaScript三种弹出框(alert,confirm和prompt)用法举例
    ::before和::after伪元素的用法
  • 原文地址:https://www.cnblogs.com/zhanghu52030/p/7906252.html
Copyright © 2011-2022 走看看