`
withoutme_hw
  • 浏览: 10054 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

工厂模式(Factory Pattern)

 
阅读更多

首先,还是引入一个场景:一家披萨店,有许多的披萨种类(CheezePizza, ClamPizza),在新建一个披萨的时候,很可能会这样做:

这就是一个简单工厂,使用这个简单工厂的类代码如下:

类图如下:

当这家披萨店越做越大,它需要做不用风味的披萨:纽约风味的CheezePizza,芝加哥风味的CheezePizza,纽约风味的ClamPizza等等,每种Pizza都可能有两种风味。甚至可能之后还会加入California,Texas风味的等等。

这时候,简单工厂显然不能满足对扩展开放的要求。我们可以这样设计:

抽象的PizzaStore中的createPizza方法交给子类去实现,抽象的PizzaStore只知道抽象的Pizza,其他一概不知。当需要扩展另外一个风味的PizzaStore的时候,只需要从PizzaStore继承,并实现createPizza方法即可。

具体工厂的代码:PizzaStore的代码:

工厂方法模式的类图:

设计原则:

如果不依赖抽象,PizzaStore很可能是这样的:

(to be continued)

分享到:
评论

相关推荐

    创建型模式之抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式是设计模式中的一种创建型模式,其主要目的是为了解耦客户端代码与具体产品的实现。在软件工程中,当系统需要根据不同的平台、环境或者配置产生一系列相关对象,而这些对象之间的关系又非常复杂时,抽象...

    The Factory Pattern(工厂模式)ppt

    工厂模式是一种常用的设计模式,它的主要目的是为了封装对象的创建过程,从而使得代码更加灵活,易于维护和扩展。在Head First设计模式中,工厂模式被用来解决对象创建时的“变化”问题,尤其是在需要根据条件动态...

    Head First 设计模式 (四) 工厂模式(factory pattern) C++实现

    1. **抽象工厂(Abstract Factory)**:这是工厂模式的核心接口,定义了创建产品对象的公共接口。在C++中,通常用抽象类或者纯虚函数接口来表示。 2. **具体工厂(Concrete Factory)**:实现了抽象工厂接口,负责...

    抽象工厂模式(Abstract Factory Pattern)

    ### 抽象工厂模式(Abstract Factory Pattern) #### 引入 在探讨抽象工厂模式之前,我们先回顾一下之前介绍过的简单工厂模式与工厂方法模式。这两种模式主要关注于解决对象创建过程中“new”操作的问题,使得创建...

    通过C#实现抽象工厂模式(Abstract Factory Pattern).rar

    在C#中实现抽象工厂模式(Abstract Factory Pattern)涉及定义一个抽象工厂接口,该接口声明用于创建抽象产品的方法。然后,为每个具体产品族实现一个具体工厂,这些工厂提供创建具体产品的实现。最后,客户端代码...

    通过python实现抽象工厂模式(Abstract Factory Pattern).rar

    抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一种在不指定具体类的情况下创建一系列相关或相互依赖对象的接口。这个模式使得客户端代码与具体产品的实现解耦,从而提高了系统的灵活性和...

    创建型模式--工厂模式(Factory Pattern)示范代码

    java 创建型模式--工厂模式(Factory Pattern)示范代码demo,关于工厂模式可以查看我的博客 http://blog.csdn.net/u012930316/article/details/54599580

    设计模式之“工厂方法模式[Factory Method Pattern]”

    - **简单工厂模式**:工厂方法模式比简单工厂模式更具有扩展性和灵活性,简单工厂模式只有一个静态工厂方法,而工厂方法模式则允许有更多的具体工厂。 - **抽象工厂模式**:工厂方法模式关注单个产品族,而抽象工厂...

    设计模式 之 “抽象工厂模式[Abstract Factory Pattern]”

    **抽象工厂模式(Abstract Factory Pattern)**是一种创建型设计模式,它提供了一种创建对象族的接口,而无需指定它们的具体类。这种模式是当一个系统需要根据不同的平台或者环境来创建一组相关或相互依赖的对象时,...

    Simple Factory Pattern.rar【GoF的简单工厂模式(C#源码)】

    简单工厂模式实际上不属于23个GoF模式,但它可以作为GoF的工厂方法模式(Factory Method)的一个引导。 UML: <<Interface>> ConcreteProduct Creator Product ------------- interface() ...

    通过java实现抽象工厂模式(Abstract Factory Pattern).rar

    在Java中,抽象工厂模式(Abstract Factory Pattern)同样是一种创建型设计模式,它允许在不指定具体类的情况下创建一系列相关或相互依赖的对象。压缩包文件代码是一个简单的Java实现示例,展示了如何使用抽象工厂...

    [创建型模式] 设计模式之抽象工厂模式(Abstract Factory Pattern)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这种模式的关键在于抽象工厂,它定义了一组创建对象的接口,允许子类决定实例化哪一个类。...

    C# 工厂模式开发示例,详细展示三种工厂模式

    工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,而不是通过具体类来实例化对象。工厂模式可以将对象的创建过程封装起来,使代码更具有灵活性和可扩展性。 工厂模式有几种常见的...

    创建型模式之工厂方法模式(Factory Method Pattern)

    在简单工厂模式中,工厂类通常是静态的,负责创建所有类型的对象,这导致在添加新产品时,需要修改工厂类。而在工厂方法模式中,每种产品都有专门的工厂类负责创建,这样就不会有这种问题。 在实际开发中,工厂方法...

    [创建型模式] head first 设计模式之工厂模式(Factory)

    工厂方法(Factory Method)是工厂模式的一种具体实现,它是《Head First 设计模式》这本书中讲解的重点之一。在这个模式中,一个工厂类声明了一个创建对象的抽象方法,但并不实现这个方法。而是由子类决定要实例化...

    前端大厂最新面试题-Factory Pattern.docx

    Factory Pattern(工厂模式) 在软件开发中,工厂模式(Factory Pattern)是一种常用的设计模式,用于创建对象的实例,而不暴露创建对象的具体逻辑。工厂模式的主要思想是将对象的创建过程封装起来,使得调用方不...

    简单工厂模式,工厂方法模式,抽象工厂模式

    简单工厂模式(Simple Factory Pattern)是一种静态工厂方法,它通过一个公共的工厂类来创建对象。这个工厂类通常包含一个或多个静态方法,用于根据输入参数创建不同类型的实例。这种模式的优点在于客户端代码无需...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER ...

    DesignPattern(VS2019_观察者模式_工厂模式_抽象工厂模式)完整示例源代码.zip

    在给定的压缩包文件中,我们重点关注两种经典的设计模式:观察者模式(Observer Pattern)和工厂模式(Factory Pattern),包括简单工厂、工厂方法和抽象工厂。下面将详细介绍这两种模式及其在C++中的应用。 **观察...

    工厂模式(Factory)

    1. **简单工厂模式(Simple Factory Pattern)**:由一个静态方法来创建产品对象,它是最简单的工厂模式形式,但不利于扩展,因为静态方法不能被继承。 2. **工厂方法模式(Factory Method Pattern)**:定义一个...

Global site tag (gtag.js) - Google Analytics