`

Factory Method模式

阅读更多
《设计模式》一书对Factory Method模式是这样描述的:
     定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
     我的理解:FatoryMethod模式是一种创建型模式,定义一个用于创建对象的接口的意思是说,我们要定义一个用于创建对象的接口(或者说抽象类,实际上就是个抽象工厂abstractFactory),它的内部有一个创建对象的方法,这个方法的返回值是一个接口(或者抽象类)的类型,这个方法就是FactoryMethod;让子类决定实例化哪一个类意思是说我们要定义一个实现了该创建对象的接口(或者抽象类)的子类(具体的工厂类concreteFactory),让子类决定要创建对象的具体类型的实例(实现FactoryMethod)。下面给出一个例子,代码如下:
abstract  class BallFactory{
protected  abstract Ball makeBall();  //Factory Method
}
class BasketballFact extends BallFactory{
public Ball makeBall(){       //子类实现Factory Method决定实例化哪一个类的
  return new Basketball();
}

}
class FootballFact extends BallFactory{
public Ball makeBall(){      //子类实现Factory Method决定实例化哪一个类的
  return new Football();
}
}
class  Basketball extends Ball{
public void play(){
  System.out.println("play the basketball");
}
}
class Football extends Ball{
public  void play(){
  System.out.println("play the football");
}
}
abstract class Ball{
protected  abstract  void play();
}

class test{
public static void main(String[] args){
  BallFactory ballFactory=new BasketballFact();
  Ball basketball=ballFactory.makeBall();
  basketball.play();
 
  ballFactory=new FootballFact();
  Ball football=ballFactory.makeBall();
  football.play();

}

}

输出如下:
play the basketball
play the football
这个模式我在abstract Factory模式中已经使用过了,只是那时候还不知道有Factory Method这个模式,在我举例中的ResFactory类的getDisplayDrvr()和getPrintDrvr()实际上就是工厂方法。具体参见《设计模式学习笔记(五)—Abstract Factory抽象工厂模式》。
小结:Factory Method模式是一个非常常用的模式。它主要适用于:
1) 当一个类不知道它所必须创建的对象的类的时候。
2) 当一个类希望由它的子类来指定它所创建的对象的时候。
3) 当类将创建对象的职责委托给多个帮助子类中的某一个,来完成这个创建对象的任务。

分享到:
评论

相关推荐

    python设计模式——factorymethod模式(最新可编辑文档).doc

    python设计模式——factorymethod模式(最新可编辑文档)

    Factory Method 工厂方法模式(创建型模式)

    ### Factory Method 工厂方法模式(创建型模式) #### 概述 在软件工程领域,设计模式是一种在特定上下文中解决常见问题的通用方案。Factory Method(工厂方法)模式是GoF(Gang of Four)设计模式之一,属于创建型...

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

    Java设计模式是面向对象编程...在阅读《Chapter1___Java常用设计模式(SingleTon、FactoryMethod、AbstractFactory)》的相关资料时,你可以更深入地学习这些模式的细节,包括适用场景、优缺点以及如何在实际项目中实现。

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

    **四、通过实际示例详细解释Factory Method模式** 实际示例: > 想象一家物流公司需要递送不同类型的包裹:标准、快递和超大尺寸。该公司有一个中央系统来处理递送请求,但不知道每种包裹类型的具体处理方式。为了...

    工厂方法模式(FactoryMethod)

    工厂方法模式是面向对象设计模式中的行为型模式之一,它提供了一种...在提供的文件列表中,“FactoryMethod”可能是包含这个简单示例代码的文件。如果有机会查看这个文件,将能更深入地理解工厂方法模式的实现细节。

    Factory Method设计模式

    Factory Method设计模式C#中的实现例子

    创建型模式之工厂方法模式(Factory Method Pattern)

    1. 抽象工厂(Abstract Factory):这是工厂方法模式的核心接口,它声明了一组用于创建产品的公共方法。抽象工厂通常为抽象类或接口。 2. 具体工厂(Concrete Factory):实现了抽象工厂接口,提供具体的产品实例。...

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

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

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)

    C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式) (Level 300)

    C++的设计模式之工厂方法模式(Factory Method)

    C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)

    Factory Method 工厂方法模式(创建型模式).wmv

    Factory Method 工厂方法模式(创建型模式).wmv

    设计模式.pdf

    本文档深入探讨了两种常见的设计模式——**Factory模式**,并细分为**Abstract Factory模式**和**Factory Method模式**,以及它们的应用场景。 ### Abstract Factory 模式解析 #### 概念 Abstract Factory模式是...

    java 设计模式

    在Java中,当我们需要创建一系列相关或相互依赖的对象,而又希望将具体的创建逻辑延迟到子类中时,FactoryMethod模式是一个好选择。它通过定义一个工厂方法,让子类决定实例化哪个类,工厂方法让类的实例化推迟到...

    .NET设计模式(5):工厂方法模式(FactoryMethod)

    .wkpf,.wkpf1{ font-family:"微软雅黑"; font-size:13px; line-height:30px; text-decoration:none; color:#818183;}1599次浏览 评价:好中差  概述...这就是要说的FactoryMethod模式了。意图定义一个用户创建

    在Java中应用设计模式-FactoryMethod

    在设计模式中,FactoryMethod也是比较简单的一个,但应用非常广泛,EJB,RMI,COM,CORBA,Swing...当一个类无法预料要创建哪种类的对象或是一个类需要由子类来指定创建的对象时我们就需要用到FactoryMethod模式了.简单说来,Fa

    Factory_Method&&Simple_Factory

    工厂方法模式(Factory Method Pattern)是设计模式中的创建型模式之一,主要解决对象创建过程中的复杂性问题。在软件工程中,当一个类不知道它所必须创建的对象的类的时候,它就不会实例化对象,而是使用一个工厂...

    结城浩《图解设计模式》笔记

    本笔记主要讲述了设计模式的基本概念和应用,包括 Iterator 模式、Adapter 模式、TemplateMethod 模式、FactoryMethod 模式和 Singleton 模式等。通过对这些设计模式的详细解释和示例代码的分析,我们可以更好地理解...

    Java设计模式(泡妞经典版)

    例如,在 Factory Method 模式的例子中,客户端可以通过 Factory 类来请求汉堡,而不需要知道汉堡的具体实现细节。 4. Prototype 模式 Prototype 模式是一种通过给出一个原型对象来指明所要创建的对象的类型,然后...

Global site tag (gtag.js) - Google Analytics