`
snake_hand
  • 浏览: 634127 次
社区版块
存档分类
最新评论

JAVA设计模式三--factorymethod(工厂方法模式)

 
阅读更多
Factory Method,工厂方法:
定义一个用于创建对象的接口,让子类决定实例化哪一个类,
Factory Method使一个类的实例化延迟到了子类


工厂方法模式
  工厂方法(Factory Method)模式 工厂方法的结构[1]简介
  工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。
核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步
抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
  工厂方法模式是简单工厂模式的衍生,解决了许多简单工厂模式的问题。首先完全实现‘开-闭 原则’,实现了可扩展。
其次更复杂的层次结构,可以应用于产品结果复杂的场合。
  工厂方法模式的对简单工厂模式进行了抽象。有一个抽象的Factory类(可以是抽象类和接口),这个类将不在负责具
体的产品生产,而是只制定一些规范,具体的生产工作由其子类去完成。在这个模式中,工厂类和产品类往往可以依次对应。
即一个抽象工厂对应一个抽象产品,一个具体工厂对应一个具体产品,这个具体的工厂就负责生产对应的产品。
  工厂方法模式(Factory Method pattern)是最典型的模板方法模式(Templete Method pattern)应用。
工厂方法模式角色与结构
[2]  抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
  具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序
调用以创建产品对象。在上图中有两个这样的角色:BulbCreator与TubeCreator。
  抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个
角色是Light。
  具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之
间往往一一对应。
工厂方法模式的应用
  工厂方法经常用在以下两种情况中:
  第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java
Collection中的iterator() 方法即属于这种情况。
  第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产
者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。


与抽象工厂模式的区别在于,抽象工厂的工厂产多种产品,而工厂方法模式工厂只产一种产品

这样添加操作对象是,就不需要修改代码,直接创建类就可以了!

如图:



举例说明,拿操作文档为例吧,

先创建文档的超级接口,对文档有打开、保存、恢复和关闭的操作

再创建txt文档的操作类:

创建了txt的操作类后,需要穿件工厂对其进行生产,此工厂只产TextDocument对象:



在创建对doc文档的操作类:

创建对Doc操作类的工厂,此工厂只产DocDocument对象:



创建main方法进行调用:


在这里,我们需要什么资源,就去什么工厂里面获取。这就是与抽象工厂的区别。



分享到:
评论

相关推荐

    java设计模式---诙谐易懂版

    例如,代理模式(Proxy Pattern)、单例模式(Singleton Pattern)、工厂方法模式(Factory Method Pattern)、抽象工厂模式(Abstract Factory Pattern)、适配器模式(Adapter Pattern)、模板方法模式(Template ...

    【Java设计模式-源码】Factory Method Pattern in Java: 使用多态制造增强灵活性

    **三、Factory Method设计模式的意图** 使用工厂方法模式定义一个用于创建对象的接口,但让子类决定实例化哪个类。这种创建型设计模式允许一个类将实例化推迟到子类,增强了代码的灵活性和可维护性。 **四、通过...

    Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)

    这里我们将深入探讨三种常见的Java设计模式:单例(Singleton)、工厂方法(Factory Method)和抽象工厂(Abstract Factory)。 **单例模式(Singleton)** 单例模式确保一个类只有一个实例,并提供一个全局访问点...

    JAVA设计模式 代码-图解

    ### JAVA设计模式 代码-图解 #### 1. 设计模式概述 设计模式是一种在特定情境下解决软件设计问题的通用解决方案。它们是经过验证的设计经验总结,可以帮助开发者更好地组织代码,提高软件的可维护性和扩展性。...

    JAVA设计模式---100%推荐

    这篇名为"JAVA设计模式---100%推荐"的资源,可能是对Java设计模式的深入解析,旨在帮助开发者更好地理解和应用这些模式。 设计模式通常分为三类:创建型、结构型和行为型。创建型模式涉及对象的实例化过程,如单例...

    java与设计模式--通俗易懂的介绍

    2. **工厂方法模式**(Factory Method Pattern):相比简单工厂模式,工厂方法模式将对象的创建委托给子类,使得核心工厂类更加抽象,不涉及具体产品的创建。这提高了系统的扩展性。例如: ```java public abstract...

    设计模式培训-factorymethod

    在众多设计模式中,“工厂方法模式”(Factory Method Pattern)尤为突出,它是一种创建型设计模式,用于解决在类的实例化过程中,如何避免硬编码的问题,同时保持系统的灵活性与可扩展性。 #### 工厂方法模式的...

    java设计模式----源代码

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可扩展性。本压缩包包含的源代码涵盖了多个经典的设计模式,接下来将对这些模式进行详细介绍。 1....

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

    JAVA设计模式--入门

    **Java设计模式——入门** 设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。Java设计模式是面向对象编程中的一个重要概念,可以帮助开发者编写可复用、可维护、易于理解的代码。这...

    《Java设计模式》课后答案-刘伟.rar

    创建型设计模式如单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype),它们主要关注对象的创建过程,使得代码更加灵活且易于扩展。 结构型设计...

    java设计模式-图解-附代码

    ### Java设计模式详解 #### 创建型模式 **1.1 工厂方法(Factory Method)** 工厂方法模式定义了一个创建对象的接口,但允许子类决定实例化哪一个类。这使得一个类的实例化可以被推迟到其子类。这种模式在以下...

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

    今天我们要探讨的是设计模式中的一个经典成员——工厂方法模式(Factory Method Pattern)。工厂方法模式是创建型设计模式的一种,它提供了一种创建对象的最佳方式。 ### 一、什么是工厂方法模式? 工厂方法模式...

    Java设计模式-图解-附代码

    ### Java设计模式详解 在软件工程领域,设计模式是一套被广泛接受的解决方案,用于解决在软件设计过程中遇到的常见问题。《Java设计模式-图解-附代码》是一部全面介绍设计模式在Java语言中应用的教程,通过图示与...

    Java设计模式之工厂模式(Factory)

    ### Java设计模式之工厂模式详解 #### 一、引言 设计模式是在软件设计过程中针对常见问题而提出的标准化解决方案。其中,“工厂模式”是面向对象编程中最常用的模式之一,主要目的是封装实例化过程,使代码更加...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    1. **创建型模式**:包括单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)、建造者(Builder)和原型(Prototype)。这些模式关注对象的创建过程,使得代码更加灵活,易于管理和扩展。...

    《Java设计模式》课后习题参考答案-刘伟(20180723).pdf

    此外,为了确保参考资料的权威性,建议读者查阅原书《Java设计模式》以获得更加详尽的解释和说明。如果有任何意见或建议,可以通过提供的电子邮箱与作者联系。在学习设计模式的过程中,理解每一个模式的意图、结构、...

    java三种工厂模式文档+三个实例.rar

    Java工厂模式是面向对象设计模式中的一个重要概念,它提供了一种创建对象的最佳方式。在工厂模式中,我们创建对象时不直接实例化具体类,而是通过一个接口或者抽象类来间接创建。这种模式的核心在于将对象的创建过程...

    Java设计模式之工厂模式(Factory模式)介绍

    **工厂模式**是一种常见的设计模式,它在Java中被广泛应用于创建对象实例。工厂模式的主要目的是将对象的创建过程封装起来,使得代码更加灵活且易于维护。通过使用工厂模式,我们可以将实例化对象的责任从客户端代码...

Global site tag (gtag.js) - Google Analytics