首先,还是引入一个场景:一家披萨店,有许多的披萨种类(CheezePizza, ClamPizza),在新建一个披萨的时候,很可能会这样做:
这就是一个简单工厂,使用这个简单工厂的类代码如下:
类图如下:![](http://p.blog.csdn.net/images/p_blog_csdn_net/withoutme_hw/EntryImages/20091121/%E7%AE%80%E5%8D%95%E5%B7%A5%E5%8E%82.png)
当这家披萨店越做越大,它需要做不用风味的披萨:纽约风味的CheezePizza,芝加哥风味的CheezePizza,纽约风味的ClamPizza等等,每种Pizza都可能有两种风味。甚至可能之后还会加入California,Texas风味的等等。
这时候,简单工厂显然不能满足对扩展开放的要求。我们可以这样设计:![](http://p.blog.csdn.net/images/p_blog_csdn_net/withoutme_hw/EntryImages/20091121/%E5%B7%A5%E5%8E%82%E6%A8%A1%E5%BC%8F.png)
抽象的PizzaStore中的createPizza方法交给子类去实现,抽象的PizzaStore只知道抽象的Pizza,其他一概不知。当需要扩展另外一个风味的PizzaStore的时候,只需要从PizzaStore继承,并实现createPizza方法即可。
具体工厂的代码:PizzaStore的代码:
工厂方法模式的类图:![](http://p.blog.csdn.net/images/p_blog_csdn_net/withoutme_hw/EntryImages/20091121/%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95%E6%A8%A1%E5%BC%8F.png)
设计原则:
如果不依赖抽象,PizzaStore很可能是这样的:![](http://p.blog.csdn.net/images/p_blog_csdn_net/withoutme_hw/EntryImages/20091121/%E4%BE%9D%E8%B5%96%E7%88%86%E7%82%B8.png)
(to be continued)
分享到:
相关推荐
抽象工厂模式是设计模式中的一种创建型模式,其主要目的是为了解耦客户端代码与具体产品的实现。在软件工程中,当系统需要根据不同的平台、环境或者配置产生一系列相关对象,而这些对象之间的关系又非常复杂时,抽象...
Head.First设计模式中的The Factory Pattern(工厂模式)ppt
1. **抽象工厂(Abstract Factory)**:这是工厂模式的核心接口,定义了创建产品对象的公共接口。在C++中,通常用抽象类或者纯虚函数接口来表示。 2. **具体工厂(Concrete Factory)**:实现了抽象工厂接口,负责...
抽象工厂模式(Abstract Factory Pattern) 引入: 在前面介绍的两个创建型模式里面,我们解决的都是有关"new"的问题,用它们来避免显式指定类创建对象。我写的也非常简单易懂,相信看过的朋友们都应该对简单工厂...
java 创建型模式--工厂模式(Factory Pattern)示范代码demo,关于工厂模式可以查看我的博客 http://blog.csdn.net/u012930316/article/details/54599580
简单工厂模式实际上不属于23个GoF模式,但它可以作为GoF的工厂方法模式(Factory Method)的一个引导。 UML: <<Interface>> ConcreteProduct Creator Product ------------- interface() ...
在简单工厂模式中,工厂类通常是静态的,负责创建所有类型的对象,这导致在添加新产品时,需要修改工厂类。而在工厂方法模式中,每种产品都有专门的工厂类负责创建,这样就不会有这种问题。 在实际开发中,工厂方法...
Factory Pattern(工厂模式) 在软件开发中,工厂模式(Factory Pattern)是一种常用的设计模式,用于创建对象的实例,而不暴露创建对象的具体逻辑。工厂模式的主要思想是将对象的创建过程封装起来,使得调用方不...
5、工厂方法模式FACTORY METHOD PATTERN 6、抽象工厂模式ABSTRACT FACTORY PATTERN 7、门面模式FACADE PATTERN 8、适配器模式ADAPTER PATTERN 9、模板方法模式TEMPLATE METHOD PATTERN 10、建造者模式BUILDER ...
1. **简单工厂模式(Simple Factory Pattern)** 简单工厂模式是一种最基础的工厂模式,也被称为静态工厂方法模式。它通过一个静态方法来创建对象,这个静态方法就是工厂,根据传入的参数或者条件来决定创建哪个...
NULL 博文链接:https://lym6520.iteye.com/blog/698013
抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这种模式的主要目的是为了隔离产品对象的创建过程,使得更换产品族或者...
备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) 单例模式(Singleton Pattern) 迭代器模式(Iterator Pattern) 访问者模式(Visitor ...
而`Factory Development & Designment Pattern with JAVA.pdf`则可能是对工厂模式的全面介绍,包括其不同变体、使用场景和代码示例。 结合这两个主题,我们可以看到它们在实际项目中的协同工作,例如,通过工厂模式...
抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。
工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 2. 结构型模式 适配器模式(Adapter ...
NULL 博文链接:https://jacky-dai.iteye.com/blog/2294531
NULL 博文链接:https://lym6520.iteye.com/blog/701742
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个...
抽象工厂模式[ABSTRACT FACTORY PATTERN] 门面模式[FACADE PATTERN] 适配器模式[ADAPTER PATTERN] 模板方法模式[TEMPLATE METHOD PATTERN] 建造者模式[BUILDER PATTERN] 策略模式 代理模式 单例模式 多例模式 工厂...