`
jubincn
  • 浏览: 242774 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

工厂方法

 
阅读更多

摘选自:《设计模式Java手册》

工厂方法模式的核心思想

一个方法能够创建一个对象,这本身并不意味着该方法是工厂方法模式的一个例子。总而言之,实现了工厂方法模式的特征是:

  • 该方法创建了一个新对象
  • 该方法的返回类型为一个抽象类或接口
  • 有若干个类实现了上述抽象类型
Arrays.asList()方法实例化了一个对象,并且其返回类型为一个接口,有的人可能会认为这种方法也是工厂模式的一个例子。尽管使用这类方法的用户也不知道到底要实例化哪个类,但是它不是工厂方法模式的例子。工厂方法模式的核心思想是:让对象的创建者代替用户确定应该实例化哪一个类。

决定要实例化的类

假定A公司计划允许客户赊购焰火制品。在赊购系统的早期设计阶段,我们负责开发一个CreditCheckOnline类,该类用于审查一名客户是否有资格向A公司赊购一定数额的产品。

开发开始后,我们发现赊购代理偶尔会离线。项目分析人员决定,在这种情况下,系统应为呼叫中心代表提供一个对话框,呼叫中心代表通过想客户询问对话框上列出的问题来确定是否允许该客户进行赊购。针对这个设计,我们创建了一个CreditCheckOffline类。起初,我们设计了两个类,CreditCheckOnline和CreditCheckOffline,他们都实现了同一个方法:creditLimit(id:int) : double

这样,无论联机赊购代理是否在线,我们都可以根据图1所示的两个类确定用户的限额。现在的问题是,这两个类的用户必须知道该实例化哪个类。但是,现在只有我们知道赊购代理是否在线!

在这个时候,我们可以让这两个类实现一个接口,并创建一个方法,此方法的返回类型为这个接口。具体而言,我们可以:
  • 创建一个包含creditLimit()方法的接口CreditCheck。
  • 修改上面两个赊购审查类的声明,使他们实现CreditCheck接口。
  • 创建一个CreditCheckFactory类,在该类中提供createCreditCheck()方法,此方法的返回类型为 CreditCheck接口。
这样,在实现createCreditCheck()方法的时候,我们可以根据赊购代理的状态决定实例化哪个类。通过应用工厂模式,无论赊购代理是否在线,客户代码都能够通过调用createCreditCheck()方法获取赊购对象。

分享到:
评论

相关推荐

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

    工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...

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

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    工厂方法模式和抽象工厂模式的区别

    工厂方法模式和抽象工厂模式是两种常见的设计模式,它们都属于创建型模式,用于解决对象的创建问题。在软件设计中,这两种模式都是用来隔离对象的创建和使用,以提高系统的灵活性和可扩展性。 首先,工厂方法模式的...

    简单工厂-工厂方法-抽象工厂 对比总结

    本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。 **简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心...

    工厂方法模式的C语言实现

    工厂方法模式是一种设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,当我们创建对象时,不会直接实例化具体的产品类,而是通过一个工厂类来创建。这样做的好处是,当需要添加新的产品...

    软件设计之工厂方法模式,源代码

    ### 软件设计之工厂方法模式解析及Java实现 #### 一、工厂方法模式概述 工厂方法模式(Factory Method Pattern)是一种常用的面向对象设计模式,属于创建型模式之一。它提供了一种创建对象的最佳方式。在工厂方法...

    工厂方法模式uml类图

    java设计模式 工厂方法模式uml类图,一张图就让你秒懂工厂方法模式

    设计模式-工厂方法模式

    工厂方法模式是设计模式中的创建型模式,它提供了一种创建对象的最佳方式。在这个模式中,一个类(称为工厂类)不再直接实例化具体的产品,而是定义一个接口或抽象类,由子类来决定实例化哪一个类。这样做的好处在于...

    用工厂方法模式重构简易计算器 源代码+实验报告

    《工厂方法模式在简易计算器重构中的应用》 在软件工程中,设计模式是解决常见问题的模板,它们为程序员提供了一种标准化的解决方案。工厂方法模式(Factory Method Pattern)是面向对象设计模式的一种,它在实际...

    设计模式之工厂方法

    这个接口就是工厂方法,让子类决定实例化哪一个类,工厂方法让类的实例化推迟到子类。 在Java编程中,工厂方法模式通常涉及到以下几个关键角色: 1. 抽象产品(Abstract Product):这是产品的抽象接口,定义了产品...

    工厂方法模式代码示例

    工厂方法模式是一种面向对象的设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。 工厂方法模式的核心思想是...

    工厂方法模式源代码

    工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,它定义了一个创建对象的接口,但允许子类决定实例化哪一个类。这个模式使类的实例化延迟到了子类,也就是所谓的“多态性工厂”。在Java中,...

    工厂方法模式Demo

    工厂方法模式是一种面向对象的设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,一个工厂类负责创建所关心的对象,而客户端代码则使用这些对象,而不必知道对象是如何被创建的。这种...

    工厂方法模式源文件

    工厂方法模式是面向对象设计模式中的行为模式,它属于创建型模式的一种,主要解决的是当一个类不知道它所必须创建的对象的类的时候,或者当一个类希望由它的子类来决定实例化哪个类的时候,如何封装这个实例化过程的...

    设计模式之工厂方法、简单工厂、抽象工厂

    工厂方法、简单工厂和抽象工厂是创建型设计模式的三种不同形式,它们都关注于对象的创建过程,但各有其特点和适用场景。 1. **工厂方法(Factory Method)**: 工厂方法模式定义了一个创建对象的接口,但让子类...

    java工厂方法模式

    Java工厂方法模式 Java工厂方法模式是一种创建型模式,它属于类的创建型模式。该模式的主要思想是,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。这样做的目的是将类的实例化操作延迟到子类中完成...

    工厂方法应用实例源码

    工厂方法(Factory Method)和抽象工厂方法(Abstract Factory Method)是两种常见的设计模式,尤其在Java编程中被广泛应用。这个"工厂方法应用实例源码"展示了如何在实际项目中使用这两种设计模式来实现一个馅饼店...

    工厂方法模式[C#]

    工厂方法模式是设计模式中的一种创建型模式,它在面向对象编程中扮演着重要的角色。在C#中,我们可以利用这种模式来抽象产品的创建过程,将具体的实例化操作延迟到子类中进行,从而实现代码的解耦和扩展性。 1. **...

    工厂方法模式应用案例

    工厂方法模式是面向对象设计模式中的行为模式之一,它提供了一种创建对象的最佳方式。在工厂方法模式中,我们创建对象时不直接实例化具体的产品,而是通过一个抽象工厂类来调用具体工厂子类的方法来生成对应的具体...

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

    在软件设计模式中,"抽象工厂"、"工厂方法"和"简单工厂"都是创建型设计模式,它们都用于封装对象的创建过程,提供了一种间接的途径来创建对象,从而使得代码更加灵活,易于扩展。下面将详细介绍这三个工厂模式。 ##...

Global site tag (gtag.js) - Google Analytics