`
遥远的救世主
  • 浏览: 6391 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

java与模式之简单工厂模式

阅读更多

12、简单工厂模式(Simple Factory)

     简单工厂模式是类的创建模式,又叫做静态工厂方法模式(Static Factory Method)。
12.1、工厂模式的几种形态
    工厂模式专门负责将大量有公共接口的类实例化。
   
形态:
简单工厂模式Simple Factory(静态工厂方法模式Static Factory Method Pattern)、
工厂方法模式Factory Method(多态性工厂模式Polymorphic Factory或虚拟构造子模式Virtual Constructor)、
抽象工厂模式Abstract Factory(工具箱模式Kit、Toolkit)

12.2 引入

12.3 简单工厂模式的结构
     简单工厂模式就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。
结构:
工厂类负责创建所有的产品,所有的产品都实现一个共有的接口。
角色:
    工厂类角色:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体java类实现。
    抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或他们的共同接口。抽象产品角色可以用一个java接口或者java抽象类实现。
    具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体的java类实现。

12.4简单工厂模式的实现

多层次的产品结构
    在真实的系统中,产品可以形成复杂的等级结构,比如在树结构上有多个抽象产品和具体产品。这时候,简单工厂模式采取的就是以不变应万变的策略,一律使用同一个工厂类。

    这样设计的好处就是设计简单,产品类的等级结构不会反映到工厂类中来,从而产品类的等级结构的变化也不会影响到工厂类。
    这样做的缺点是,增加新的产品必将导致工厂类的修改。
使用接口或者抽象类
    如果模式所产生的具体产品类彼此之间没有共同的商业逻辑,那么抽象类产品角色就可以有一个接口扮演;相反,如果这些具体产品类彼此之间确实有共同的商业逻辑,那么这些共有的逻辑就应当移到抽象角色里面,这就意味着抽象角色应当由一个抽象类扮演。在一个类型的等级结构里面,共同的代码应当尽量向上移动,以达到共享的目的。

多个工厂方法
    每一个工厂类可以有多于一个的工厂方法,分别负责创建不同的产品对象。
抽象产品角色的省略
    如果系统仅有一个具体产品角色的话,那么就可以省略掉抽象产品角色。
工厂角色与抽象角色的合并
    在有些情况下,工厂角色可以由抽象产品角色扮演。一个抽象产品类同时是子类的工厂
三个角色全部合并
    如果抽象产品角色已经被省略,而工厂角色就可以与具体产品角色合并。换言之,一个产品类为自身的工厂。显然,三个原本独立的角色:工厂角色、抽象产品以及具体产品角色都已经合并成为一个类,这个类自行创建自己的实例。
产品对象的循环使用和登记式的工厂方法

分享到:
评论

相关推荐

    java设计模式之工厂模式

    java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式java设计模式之工厂模式...

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    在给定的资源中,"设计模式交流之工厂模式-shannonxu-2014-10-24.pptx"可能是详细的PPT讲解,涵盖了这些模式的概念、结构、优缺点以及实际应用案例。而"Factory"可能是一个代码示例,展示了工厂模式的具体实现,包括...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    在软件设计模式中,工厂模式是一种非常...在实际项目中,工厂模式经常与其他设计模式(如策略模式、建造者模式等)结合使用,以解决更复杂的问题。阅读并理解这些代码有助于深入理解工厂模式及其在Java编程中的应用。

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂

    在Java中,简单工厂、工厂方法和抽象工厂是三种不同的工厂模式实现。 5. **简单工厂模式**:是最简单的工厂模式形式,它包含一个工厂类,根据传入的参数决定返回哪种类型的实例。虽然易于理解,但不易扩展,因为...

    java设计模式-简单工厂模式示例

    在Java编程中,简单工厂模式通过一个中心工厂类来负责创建相关的对象,而无需让客户端代码直接new具体的产品类。这种方式提高了代码的可读性和可维护性,降低了系统的耦合度。 首先,我们来看一下简单工厂模式的...

    Java设计模式-简单工厂

    ### 知识点二:简单工厂模式的角色与职责 1. **工厂类(Factory)**:这是模式的核心,它包含一个用于创建对象的公共接口,并且决定哪个具体类将被实例化。在Java中,这个角色通常由一个静态方法来实现。 2. **...

    Java工厂模式:简单工厂、工厂方法模式、抽象工厂模式代码示例

    在Java中,工厂模式分为三种:简单工厂、工厂方法模式和抽象工厂模式。 **简单工厂模式** 是最基本的工厂模式,它由一个工厂类根据传入的参数决定创建哪一种产品类的实例。简单工厂容易实现,但违反开闭原则,即...

    java 简单工厂模式 源代码

    从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...

    Java设计模式04简单工厂模式.pdf

    ### Java设计模式之简单工厂模式详解 #### 一、创建型模式概览 在软件工程领域,设计模式是一种被广泛采用的解决方案模板,用于解决在软件设计过程中遇到的常见问题。其中,创建型模式(Creational Pattern)专注...

    JAVA简单工厂创立性模式介绍

    总结,简单工厂模式适合简单的对象创建,工厂方法模式则适用于需要根据不同条件创建不同对象的情况,而抽象工厂模式则更适用于需要创建一组相关对象的场景。理解并灵活运用这些模式,能有效提高代码的可维护性和可...

    java工厂模式-简单工厂模式

    简单工厂模式并不是GoF设计模式之一,但它作为设计模式的基础,在实际项目中被广泛使用。简单工厂模式的主要目的是将对象的创建与对象的使用分离,使代码更加灵活,易于扩展和维护。本文将详细介绍简单工厂模式的...

    java工厂设计模式之简单工厂

    **Java工厂设计模式之简单工厂** 简单工厂设计模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个静态方法获取所需的具体产品,而无需了解这些产品的具体实现。这种模式的主要目的是将...

    java设计模式之简单工厂.zip

    在这个"java设计模式之简单工厂.zip"压缩包中,包含了两个视频文件,分别以“5.理解简单工厂.avi”和“4.初识和体会简单工厂.avi”命名,它们旨在帮助我们深入理解和掌握Java中的简单工厂设计模式。 简单工厂模式是...

    Java 工厂模式 抽象工厂 工厂方法模式

    - `factory2`、`factory3`、`factory1` 这些文件名可能是实现工厂模式的Java源代码,分别代表了不同级别的工厂类,如简单工厂、工厂方法和抽象工厂的实现。通过查看这些源代码,可以学习到如何在实际项目中应用这些...

    Java简单工厂模式和传统模式实现对比

    Java简单工厂模式是一种设计模式,它是创建型模式的一种,用于将对象的创建过程封装到一个独立的工厂类中,使得客户端代码无需关心具体的对象创建细节,只需要知道如何调用工厂方法即可得到所需的对象。这种模式在...

    JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)

    总的来说,简单工厂模式提供了一种便捷的创建对象的方式,减少了客户端与具体实现之间的耦合。虽然在某些情况下可能导致代码的可扩展性和可维护性降低,但在许多简单的应用场景中,它仍然是一个实用的设计模式。理解...

    java简单工厂模式文档简单汇总

    【Java 简单工厂模式】简单工厂模式是一种创建型设计模式,它的主要思想是提供一个工厂类,根据传入的参数动态地返回一个产品对象。这种模式将对象的创建与对象的使用分离,使得代码更加简洁且易于维护。 在Java中...

    Java 简单工厂模式例子

    **Java 简单工厂模式详解** 简单工厂模式是一种创建型设计模式,它提供一个创建对象的静态方法,客户端可以通过这个方法来实例化所需的类,而无需关心具体类的实现细节。这种模式在Java编程中广泛应用,特别是在...

    java 设计模式 mvc模式 单例模式 代理 工厂 简单工厂 第二部分

    本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...

Global site tag (gtag.js) - Google Analytics