设计模式之工厂模式-工厂方法模式
大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目。
来源:凯哥Java(kaigejava)
需求:
披萨项目:
要方便披萨品种的扩展、要便于维护、要能运行时候方便扩展
来看看披萨族设计:
司小司经过分析得到:披萨都需要烘焙(bake)、切割(cut)、包装(box)还有就是披萨原材料准备(prepare)。其中变化的就是prepare准备的原材料。不同披萨的原材料不同,但是都需要进行烘焙、切割、包装。所以,我们这里原材料方法就做抽象的,不具体实现了。经过分析之后得到如下类图:
第一次设计:使用简单工厂模式(可以参考上一篇的司小司面馆项目)发现不行。为什么呢?
随着披萨越来越火,很多地方都要加盟了。如果加盟的话,每个地方都要创建一个简单工厂模式那样,同样的代码,就要创建很多份,在维护的时候,就很麻烦的。
选择第二种设计:工厂方法模式。
先来看看项目结构:
说明:
1:domain:是具体pojo对象。都继承于PizzaAbstract类
其中以BeiJin开头的,都是北京连锁店的。以ShanHai开头的都是上海连锁店的。
2和3是披萨和披萨订单的抽象类
4:具体连锁点的订单类。都继承于PiazzOrderAbstract类
5:测试类
我们先来看看两个抽象类。
PizzaAbstract类:
PizzaOrderAbstract类:
在来看一个北京的greekpizza:
在来看看BeiJinOrderPizza:
测试类:
查看运行结果:
通过上面代码演示,我们可以得到以下:
工厂方法模式设计方案:
将披萨项目里的披萨对象实例化功能抽象成抽象方法,在不同加盟店具体实现功能。
工厂方法模式:
定义了一个创建对象的抽象方法,由子类决定要实例化的类。从这句话中,我们可以知道,工厂方法模式是将对象的实例化(创建)推迟到子类中了。
工厂方法模式和简单工厂模式对比:
简单工厂模式:
根据类的标识,通过工厂对象就可以得到具体类的实例对象了。在工厂对象里面,类对象的实例化如下:
对象的实例化,是在工厂对象里面。
工厂方法模式:
是将对象的创建,抽取出来了。就是创建披萨的方法,抽取到一个具体的类中。
我们在来看看,披萨订单对象:
在具体调用的时候:
PizzaOrderAbstract bjOder = new BeiJinOrderPizza();调用具体的子类。
而对象的实例化,是在子类中进行的。
联系凯哥--》凯哥Java(kaigejava)
凯哥个人博客:www.kaigejava.com。个人博客可以私信凯哥哦~
工厂方法模式通过一个抽象的工厂类来创建工厂,再由工厂通过一定的方法创造一定的对象,这样如果有新的产C出现不需要修改已有代码只要新建一个产品的从子类和工厂的子类就可以啦。
相关推荐
设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)
在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...
在标题“c++设计模式-工厂方法模式”中,我们关注的是如何在C++中实现工厂方法这一设计模式。工厂方法模式的核心思想是定义一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以使类的实例化过程...
工厂方法模式是设计模式中的创建型模式之一,它在软件工程中扮演着非常重要的角色,尤其是在C#这样的面向对象编程语言中。工厂方法模式提供了一种封装对象创建过程的方法,使得具体的创建过程延迟到子类中进行,从而...
《设计模式之——工厂方法(Factory Method)》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它被广泛应用于构建高质量、可维护的代码。工厂方法是面向对象设计模式的一种,属于创建型模式。这个...
在给定的资源中,"设计模式交流之工厂模式-shannonxu-2014-10-24.pptx"可能是详细的PPT讲解,涵盖了这些模式的概念、结构、优缺点以及实际应用案例。而"Factory"可能是一个代码示例,展示了工厂模式的具体实现,包括...
工厂方法模式是设计模式中的创建型模式,它提供了一种创建对象的最佳方式。在这个模式中,一个类(称为工厂类)不再直接实例化具体的产品,而是定义一个接口或抽象类,由子类来决定实例化哪一个类。这样做的好处在于...
java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...
本篇文章将深入探讨设计模式中的一个核心概念——工厂方法模式,通过Python和C++的示例代码来阐述其原理和应用。 工厂方法模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。...
工厂模式属于创建型设计模式,它的主要目的是通过提供一个统一的接口来创建对象,使得客户端代码无需关心具体对象的创建过程,只需通过工厂方法调用来获取所需的对象。 在工厂模式中,我们通常定义一个抽象工厂类,...
工厂方法模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,当我们创建对象时,我们不直接实例化具体类,而是调用一个工厂方法来创建对象。这种模式允许我们在不修改已有代码的情况下,...
工厂方法模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是当系统需要创建的对象具有多种类型,而具体创建哪种类型的对象在运行时才能确定的问题。在这个压缩包中,`FactoryMethod`可能包含了Java...
这三种工厂模式的共同之处在于它们都为对象的创建提供了抽象层,隐藏了具体的实例化过程。然而,它们之间的区别在于灵活性和抽象程度: - 工厂方法模式提供了一种定义抽象接口的方法,让子类来决定具体实例化哪个类...
**工厂方法设计模式** 在iOS开发中,设计模式是一种被广泛采用的最佳实践,它提供了一种在不指定具体实现的情况下创建对象的方式。工厂方法(Factory Method)是面向对象设计模式中的一种,属于创建型模式。它定义...
设计模式专题之(一)单例模式---设计模式工厂方法模式示例代码(python--c++)
根据提供的标题“深入浅出设计模式之工厂模式”与描述“将《Head First 设计模式》(中文版)按章节进行了分割,每章一个文件,方便大家下载”,我们可以推测出这部分内容主要关注的是设计模式中的工厂模式。...
在软件设计模式中,工厂模式是一种非常常见的创建型模式,用于封装对象的创建过程,使得客户端无需关注具体的对象实例化细节。本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。...
Java设计模式中的工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,当客户端请求创建一个产品对象时,它不会直接创建,而是调用一个工厂对象来完成创建工作。这种模式的核心在于封装了对象...
工厂方法模式是面向对象设计中的一种经典设计模式,属于创建型模式。在软件工程中,当我们需要创建一系列相关或相互依赖的对象时,而不希望指定具体的类,工厂方法模式提供了一个很好的解决方案。 工厂方法模式的...