`
iamxi
  • 浏览: 188078 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    factory_method.zip

    设计模式:工厂方法。这个源码是学习工厂方法时写的,用来体会工厂方法模式的思想。因为是使用eclipse编写的,建议用eclipse打开。

    FactoryMethod.zip

    这个代码是java工厂方法模式简单的demo,里面有7个java文件,配合博客详解可以更好地的学习java设计模式。

    java 简单工厂模式 源代码

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

    Android源码学习之工厂方法模式应用及优势介绍

    Factory Method lets a class defer instantiation to subclasses. 定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。常用的工厂方法模式结构:  如上图所示(截取...

    Java中的design-patterns::open_book:使用通俗易懂的案例,类图,以及配套学习笔记来详解Java的二十种设计模式!

    :check_mark:工厂方法模式( Factory Method Pattern ) :memo: , :check_mark:抽象工厂模式( Abstract Factroy Pattern ) :memo: , :check_mark:建造者模式( Builder Pattern ) :memo: , :check_mark:单例...

    设计模式之创建型模式

    通过对设计模式的学习和了解,以C#语言实践了... 如果遇到“易变类”,起初的设计通常从FactoryMethod开始,当遇到更多的复杂变化时,再考虑重构为其他三种工厂模式( Abstract Factory,Builder , Prototype )。

    学习php设计模式 php实现工厂模式(factory)

    Factory Method使用一个类的实例化延迟到其子类【GOF95】 二、工厂模式结构图 三、工厂模式中主要角色 抽象产品(Product)角色:具体产品对象共有的父类或接口 具体产品(Concrete Product)角色:实现抽象产品角色所...

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    1. 工厂模式(Factory Method) 2 2. 抽象工厂模式(Abstract Factory) 3 3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式(Protype) 5 6.适配器模式(Adapter) 6 7.装饰模式(Decorator) 6 ...

    23种设计模式 - 各种模式的学习

    1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Singleton(单例) 结构型 6. Adapter Class/Object(适配器) 7. Bridge(桥接) 8. ...

    FactoryMethod.zip_单片机开发_Java_

    工厂方法模式源代码通过一个简单的实例来学习工厂方法模式

    23种Python设计模式示例演示源码包.rar

    23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...

    Java的23种设计模式疯狂Java总结.doc

    1.1 创立型模式 AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Protot*pe * 原型模式 ) 1.1.1 工厂方法 *义一个用于创立对象的接口,让子类决定实例化...

    PHP中的几种设计模式1

    (1)简单工厂模式简单工厂模式又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式 (2) 工厂方法模式此模式中,通过定义一

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    第16章 工厂方法(factory method)模式 141 第17章 抽象工厂(abstract factory)模式 148 第18章 原型(prototype)模式 158 第19章 备忘录(memento)模式 163 第20章 操作型模式介绍 176 第21章 模板方法(template ...

    设计模式解析-英文

    各种工厂模式 242 第21章 Singleton模式和Double-Checked Locking模式 249 第22章 Object Pool模式 257 第23章 Factory Method模式 267 第24章 工厂模式的总结 272 第八部分 终点与起点 第25章 设计模式回顾:总结与...

    design-pattern-java.pdf

    Factory Method Pattern 工厂三兄弟之工厂方法模式(一) 工厂三兄弟之工厂方法模式(二) 工厂三兄弟之工厂方法模式(三) 工厂三兄弟之工厂方法模式(四) 抽象工厂模式-Abstract Factory Pattern 工厂三兄弟之...

    二十三种设计模式【PDF版】

    设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. 设计模式之 Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这...

    设计模式:可复用面向对象软件的基础

    3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 Singleton(单件)—对象创建型 模式 84 3.6 创建型模式的讨论 89 第4章 结构型模式 91 4.1 Adapter(适配器)...

    Java设计模式学习教程与案例源码.zip

    1. [工厂方法](worthed/OriginBlog/blob/master/articles/FactoryMethodPattern.md) 2. [简单工厂](worthed/OriginBlog/blob/master/articles/SimpleFactoryPattern.md) 3. [抽象工厂](worthed/OriginBlog/blob/...

Global site tag (gtag.js) - Google Analytics