`
iamxi
  • 浏览: 190843 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学习:工厂方法(Factory Method)

阅读更多

意图:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。

 

别名:

虚构造器(Virtual Constructor)

 

结构:


 

•Product

— 定义工厂方法所创建的对象的接口。
• ConcreteProduct

— 实现Productt接口。
• Creator
— 声明工厂方法,该方法返回一个 Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的 ConcreteProduct对象。

— 可以调用工厂方法以创建一个Product对象。
• ConcreteCreator
— 重定义工厂方法以返回一个ConcreteProduct实例。

 

代码示例:

Creator类

public abstract class Creator {
	
	protected abstract Product factoryMethod();
	
	public void anOperation() {
		Product product = factoryMethod();
		//do some thing
	}
}

 

ConcreteCreator类

public class ConcreteCreator extends Creator {

	@Override
	protected Product factoryMethod() {
		return new ConcreteProduct();
	}

}

 

问题:

可能仅为了创建适当的 Product对象而迫使你创建Creator子类。

 

适用性:

一个系统要独立于它的产品的创建、组合和表示时。

一个系统要由多个产品系列中的一个来配置时。

当你要强调一系列相关的产品对象的设计以便进行联合使用时。

当你提供一个产品类库,而只想显示它们的接口而不是实现时。

 

相关模式:

Abstract Factory经常用工厂方法来实现;

工厂方法通常在Template Method中被调用;

Prototype不需要创建Creator的子类。但是,它们通常要求一个针对Product类的Initialize操作。Creator使用Initialize来初始化对象。而Factory Method不需要这样的操作。

  • 大小: 16.3 KB
分享到:
评论

相关推荐

    工厂方法模式(FactoryMethod)

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

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

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

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

    ### Factory Method 工厂方法模式(创建型模式) #### 概述 在软件工程领域,设计模式是...通过学习这些书籍,开发者可以更深入地理解 Factory Method 模式以及其他设计模式的原理与实践方法,从而提升自己的设计水平。

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

    3. **工厂接口(Factory Method)**:定义创建产品对象的接口,通常是一个抽象类,包含一个或多个工厂方法,用于返回产品对象。 4. **具体工厂(Concrete Factory)**:实现了工厂接口,提供了创建具体产品对象的...

    工厂方法模式源文件

    通过阅读和分析源文件`FactoryMethod`,我们可以深入理解工厂方法模式的实现细节,例如工厂类如何创建产品对象,产品对象如何通过接口或抽象类进行交互等。这对于学习和应用设计模式,以及提高代码的可维护性和扩展...

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

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

    c#面向对象设计模式之factory method

    "工厂方法"(Factory Method)是这些设计模式之一,属于创建型模式,它在C#编程中扮演着至关重要的角色。本教程由张建中教授,旨在深入解析C#中的工厂方法设计模式。 工厂方法模式是一种抽象工厂模式的变体,主要...

    FactoryMethod.zip

    在这个名为"FactoryMethod.zip"的压缩包中,包含了学习Java工厂方法模式的示例代码。通常,这样的示例会包括以下几个关键组件: 1. **抽象产品类(Abstract Product)**:这是所有具体产品类的基类或接口,定义了...

    设计模式之:工厂模式

    工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象的...通过阅读`factoryMethod`和`factoryMethod2`的具体实现,可以深入理解工厂模式如何在实际问题中发挥作用,并学习如何在自己的项目中应用这一模式。

    UIKit+Factory-Method

    通过分析这个示例,你可以学习到如何在Objective-C中实现工厂方法,以及如何将这个模式应用到UIKit中,以创建和管理用户界面组件。这将帮助你更好地理解和掌握在iOS开发中如何利用设计模式提高代码的可维护性和可...

    FactoryMethodPattern.zip

    在"FactoryMethodPattern"的压缩包文件中,我们可以预期包含以下内容: - 示例代码:展示了如何在Swift或Objective-C中实现工厂方法模式。可能包含抽象产品接口、具体产品类、抽象工厂接口和具体工厂类的定义,以及...

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

    在软件设计模式中,工厂方法模式(Factory Method Pattern)和抽象工厂模式(Abstract Factory Pattern)是两种常用的创建型设计模式,它们都属于“工厂”家族,但有着不同的应用场景和目标。 工厂方法模式的核心...

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

    学习Java中的工厂方法模式,探索示例、用途、好处以及它如何增强代码的灵活性和可维护性。 **二、别名** * Virtual Constructor **三、Factory Method设计模式的意图** 使用工厂方法模式定义一个用于创建对象的...

    设计模式之工厂方法

    工厂方法(Factory Method)是设计模式中的一员,属于创建型模式,它的核心思想是定义一个用于创建对象的接口,让子类决定实例化哪一个类。这个接口就是工厂方法,让子类决定实例化哪一个类,工厂方法让类的实例化...

    设计模式工厂方法模式PPT学习教案.pptx

    本学习教案旨在讲解设计模式中的工厂方法模式(Factory Method),通过学习本教案,学生将掌握工厂方法模式的定义、结构、实例、分析和应用。 模式动机与定义 在软件设计中,我们经常需要创建对象,但是在什么时候...

    设计模式——工厂方法模式

    工厂方法模式是面向对象设计模式中的一种,它属于创建型模式,主要解决的是...通过阅读`FactoryMethod`目录下的源代码,你可以更深入地理解如何在Java中应用这个模式,并学习到如何在实际项目中灵活运用工厂方法模式。

    工厂方法应用实例源码

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

    工厂方法模式应用案例

    通过学习这两个案例,你可以深入理解如何在实际项目中运用工厂方法模式,以及它如何帮助你更好地组织代码,提高软件设计的质量。此外,还可以结合其他设计模式,如策略模式、单例模式等,进行组合使用,以应对更复杂...

    工厂方法模式java实例demo

    工厂方法模式是面向对象设计模式中的行为模式,它提供了一种创建对象的最佳方式。在工厂方法模式中,我们在...在Java中,通过实际的代码示例,如“工厂方法模式java实例demo”,学习者可以更好地理解和应用这个模式。

    java工厂模式SimpleFactory

    这时,可以考虑使用更高级的工厂模式,如AbstractFactory(抽象工厂)或者FactoryMethod(工厂方法)。 在压缩包文件`SimpleFactory`中,很可能包含了实现上述结构的Java源代码文件,包括`Car`接口或抽象类、具体的...

Global site tag (gtag.js) - Google Analytics