【创建型设计模式】-简单工厂方法设计模式

单词:Creator [kri?et?] 创造者,创作者;  Product [?prɑd?kt]  产品; 结果; 乘积; 作品; factory [?f?kt?ri] 工厂,制造厂; <古>代理店;

简单工厂方法设计模式的设计图纸

Creator 是一个工厂类, 根据“四人帮”的软件设计模式的记号,图中的右半部分的类叫做产品类,由接口 Product 与 具体的实现类产品类ConcreteProduct 组成。

产品类实际上代表被创建的类结构,而Creator 类 是简单工厂的核心部分。Creator 类 拥有一个方法 ,factory() 及工厂方法,该方法负责创建产品类的对象。简单工厂方法模式 的特点是仅仅一个具体的创建者类,并且在此类中包含一个静态的工厂方法 factory()。

简单工厂方法模式包含的各组成部分的意义如下:

1.Creator:是简单工厂方法模式的核心,包含应用程序所需的业务逻辑,当客户类 Client 需要的时候,委托工厂类创建产品的实例。

2.Product:可以是 C# 接口,或者C# 抽象类, 是具体的子类 的超类,或者共同接口。

3.ConcreteProduct:实现 Product 接口,或者继承抽象类 Product。

例子:汽车保险管理程序实例的最后解决方案及为简单工厂方法模式, 其设计图给出,下面给出相应的代码。

namespace SimpleFactory
{
    class Program
    {
        static void Main(string[] args)
        {
            //根据不同的场景实例出不同的类
            IAutoInsurance ai = PolicyProducer.getPolicyObj("bodyInjure");
            string desc = ai.getInsurInfo();
        }
    }

    /// <summary>
    /// 工厂类
    /// </summary>
    public class PolicyProducer
    {
        public static IAutoInsurance getPolicyObj(string option)
        {
            IAutoInsurance policy = null;
            switch (option)
            {
                case "bodyInjure":
                    policy = new BodyInjur();
                    break;
                case "collision":
                    policy = new Collision();
                    break;
            }
            return policy;
        }

    }

    /// <summary>
    /// 抽象产品
    /// </summary>
    public interface IAutoInsurance
    {
        public string getInsurInfo();

    }

    /// <summary>
    /// 产品类1
    /// </summary>
    public class BodyInjur : IAutoInsurance
    {
        private string description;

        public string getInsurInfo()
        {
            return "bodyInjure";
        }
    }

    /// <summary>
    /// 产品类2
    /// </summary>
    public class Collision : IAutoInsurance
    {

        public static string getInsurInfo()
        {
            return "collision";
        }
    }

}

简单工厂方法模式的有点如下:

1.工厂方法包含从一个类的结构中选择初始类的业务逻辑。

2.客户类不直接创建产品的对象,客户类只作为对象的消费者。

3.简单工厂方法模式实现了责任分离。

4.客户类不负有创建类的对象责任,因此如果有新产品子类加入,不必修改已有的客户类代码(前提是客户类暂时不需要使用新的产品子类对象。)

5.因为工厂类中包含了对象生成的必要逻辑判断,根据客户端的选择条件对台实例化相关的类,所以客户端类中没有创建对象所需要的条件语句。

简单工厂方法模式的缺点如下:

1.由于工厂类必须知道怎么创建每个子类的对象,所以每当增加产品的类时候,都需要修改工厂方法,简单工厂方法模式不符合开闭原则。

2.因为工厂类的工厂方法是讲台的,所以工厂类中的方法不能被继承,简单工厂类只能是有一个单独的类,而不能成为一个层次的类。

时间: 2024-10-16 01:40:42

【创建型设计模式】-简单工厂方法设计模式的相关文章

创建型模式:工厂方法

文章首发创建型模式:工厂方法 简介 姓名:工厂方法 英文名:Factory method Pattern 价值观:扩展是我的专属 个人介绍: Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses. (定义一个用于创建对象的接口,让子类决定

创建型模式 简单工厂模式

创建型模式 简单工厂模式 /** * 创建型模式 简单工厂模式 * 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式.通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. * * 1.工厂(Creator)角色 * 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类可以被外界直接调用,创建所需的产品对象. * 2.抽象(Product)角色 * 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口. * 3.具体产品(Concrete P

&quot;围观&quot;设计模式(8)--创建型之简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式的核心思想在我认为是将类创建的权利授予给工厂类,其他的类不允许创建,授予了权限的类创建好之后,需要某些的对象的时候,可以去工厂当中去取.也就是像一个工厂一样,用的人不需要关心对象怎么来的,你只需要关心怎么用就好了.工厂模式细分为三种,简单工厂.工厂方法.抽象工厂三种模式.这三种模式比较相似,往往会引发混淆,本文主要结合实际的例子去进行区分.理清三者之间的关系与适用范围. 概述 简单工厂 对于简单工厂,我个人的理解是,直接实现一个方法,要生产什么由这个方法以及传入的参数来决定. 工厂方法

设计模式——创建型模式之工厂方法模式(三)

模式的定义与特点 工厂方法(FactoryMethod)模式的定义:定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中.这满足创建型模式中所要求的“创建与使用相分离”的特点. 我们把被创建的对象称为“产品”,把创建产品的对象称为“工厂”.如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”,它不属于 GoF 的 23 种经典设计模式,它的缺点是增加新产品时会违背“开闭原则”. 本节介绍的“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以

一起来学设计模式-----创建型模式之工厂方法

工厂方法模式,在简单工厂上再深一层,简单工厂里有一个弊端,就是在方法里是根据用户的输入直接返回子类对象.在工厂方法里,定义了一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使得一个类的实例化延迟到了子类. 以之前的操作运算为例,使用工厂方法代码如下: from abc import ABCMeta, abstractmethod class BaseOperation: def GetResult(self,a,b): result = 0 return result class Op

创建型模式之工厂方法

工厂方法模式(Factory Method Pattern)又叫虚拟构造函数(Virtual Constructor)模式或多态性工厂(Polymorphic Factory)模式.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建性工作推迟到子类中. 工厂模式又分为简单工厂.工厂方法和抽象工厂模式. 工厂方法模式,英文原话为:Define an interface for creating an object, but let subclasses decide which cla

java语言实现创建型模式——简单工厂模式

一.描述 简单工厂模式又名静态工厂方法模式,是所有工厂模式中最简单的一个,它定义一个具体的工厂类来负责创建所有类的对象并初始化创建的对象,它主要由3部分组成:工厂类.抽象类.实现抽象类的具体类,然后通过客户端调用工厂类创建相应的对象. 注意:简单工厂模式不属于GoF总结的23种设计模式,它是相当于初学java的HelloWorld案例,帮助初学者了解设计模式,增长信心的一个设计模式. 二.简单工厂模式的优缺点 优点:相对于直接在客户端创建对象并初始化对象的值来说,简单工厂模式将创建对象和初始化任

1 创建型模式-----简单工厂模式

1.1 模式定义 简单工厂模式:将创建不同对象的代码封装到具体产品类中: 将创建这些具体产品类的公共代码封装到到抽象产品类中: 定义一个工厂类,该类的静态方法可以根据不同参数创建不同的具体产品实例. 模式要点:需要什么类型的产品,只需传入一个正确的参数,就可以获得一个对应的实例. 1.2 模式结构图 1.3 模式角色 抽象产品Product: 具体产品类的父类,封装了各种具体产品的公共方法. 具体产品ConcreteProduct: 需要实例化的类. 工厂类Factory: 简单工厂模式的核心,

PYTHON设计模式,创建型之简单工厂模式

这个系统,感觉思路清爽,,相信多练练,多思考,就会熟悉的.. http://www.jianshu.com/p/2450b785c329 #!/usr/bin/evn python #coding:utf8 class Pizza(object): def prepare(self, type): print 'prepare {type} pizza'.format(type=type) def bake(self, type): print 'bake {type} pizza'.forma