工厂方法(FactoryMethod)模式

为创建对象定义一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟至子类。

public interface Factory{
Product createproduct();
}//Factory接口定义了createproduct()方法来返回Product类型的实例对象,
//ConcreateFactory实现了该方法,每次调用都会实例化一个新的ConcreateProduct返回
public class ConcreateFactory implements Factory{
     public Product createProduct(){
     return new ConcreateProduct();
     }

}
public interface Product{}
public class ConcreateProduct implements Product{}

//工厂方法模式使用
public class Client{
private Factory factory;
public Client (Factory factory){
 this.factory=factory;
}
public void doSomething(){
	Product product =factory.createproduct();
	//to do something...
}
public static void main(String[] args)
{
	Client client=new Client(new ConcreateFactory());
	client.doSomething();
}

}
//如果具体实现类较多,我们可以定义一个参数化的工厂方法,根据不同
//的输入返回不同的实现子类,代码片段如下.
public Product createProduct(String type){
if("type1".equals(type)){
	return a type1 instance...
}else if("type2".equals(type)){
	return a type2 instance...
}else{
		...
}
}
时间: 2024-11-27 04:31:49

工厂方法(FactoryMethod)模式的相关文章

【设计模式】——工厂方法FactoryMethod

模式意图 工厂方法在MVC中应用的很广泛. 工厂方法意在分离产品与创建的两个层次,使用户在一个工厂池中可以选择自己想要使用的产品,而忽略其创建过程. 简单来说,就像一个大型的工厂,对于消费者来说,只需要知道都有什么工厂的产品生产出来,而不需要关心工厂是如何生产产品的.对于工厂来说,必须知道所有的产品的制造方法. 模式结构 Creator 创建工厂的接口 ConcreteCreator 具体的产品创建者 Product 产品的接口 ConcreteProduct 具体的产品 适合场景 1 当一个类

乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern)

原文:乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern)[索引页][源码下载] 乐在其中设计模式(C#) - 工厂方法模式(Factory Method Pattern) 作者:webabcd 介绍 定义一个用于创建对象的接口,让子类决定将哪一个类实例化.Factory Method使一个类的实例化延迟到其子类. 示例 有SqlMessage和XmlMessage,用Factory Method来实例化它们. MessageModel using Syst

.NET工厂方法模式讲解_实用技巧

工厂方法模式介绍: 工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品. 工厂方法模式结构图: 角色分类: 抽象工厂角色:是工厂方法模式的核心,与应用程序无关.任何在模式中创建的对象的工厂类必须实现这个接口. 具体工厂角色:这是实现抽象工厂接口的具体

.NET设计模式-工厂方法模式(Factory Method)

工厂方法模式(Factory Method) --.NET设计模式系列之五 Terrylee,2004年1月2日 概述 在软件系统中,经常面临着"某个对象"的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如何应对这种变化?提供一种封装机制来隔离出"这个易变对象"的变化,从而保持系统中"其它依赖该对象的对象"不随着需求的改变而改变?这就是要说的Factory Method模式了. 意图 定义一个用户创

艾伟_转载:.NET设计模式:工厂方法模式(Factory Method)

概述 在软件系统中,经常面临着"某个对象"的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口.如何应对这种变化?提供一种封装机制来隔离出"这个易变对象"的变化,从而保持系统中"其它依赖该对象的对象"不随着需求的改变而改变?这就是要说的Factory Method模式了. 意图 定义一个用户创建对象的接口,让子类决定实例化哪一个类.Factory Method使一个类的实例化延迟到其子类. 结构图 生活中

工厂模式之二 - 工厂方法(Factory Method)

工厂方法(Factory Method)模式又叫做多态性工厂(Polymorphic Factory). 简单工厂模式的优缺点 优点:将类的创建逻辑从客户端移入工厂类. 缺点:对开-闭原则支持不够,如果有新类加入,必须修改工厂类的逻辑.   工厂方法克服了简单工厂模式的缺点,引入了多态性.   工厂方法和简单工厂的区别: 简单工厂模式的核心是一个具体类,工厂方法模式的核心是一个抽象类.  下面我们来看一下工厂方法的具体实现,我们还是以画图程序为例子. 图形的代码结构和简单工厂类似,读者可以参看简

设计模式:工厂方法模式

之前写了  设计模式系列目录 今天说一下工厂方法模式: 定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类 所谓的决定并不是批模式允许子类本身在运行时做决定,而是指在编写创建者类时,不需知道创建的产品是哪一下,选择了使用 哪个子类,就决定了实际创建的产品是什么.   1 #region 工厂模式 2 3 // 产品 4 public abstract class Product 5 { 6 public string productName; 7 } 8

设计模式的C++实现之工厂方法模式

工厂方法模式不同于简单工厂模式的地方在于工厂方法模式把对象的创建过程放到里子类里.这样工厂父对象和产品父 对象一样,可以是抽象类或者接口,只定义相应的规范或操作,不涉及具体的创建或实现细节. 其类图如下: 实例代码为: #pragma once class IProduct { public: IProduct(void); virtual ~IProduct(void); }; #pragma once #include "iproduct.h" class IPad : publi

用AspectJ实现工厂方法模式

工厂方法模式根据产品的等级结构使用对应的工厂来创建特定的产品,它一般包括抽象工厂.具体工厂和抽象产品.具体产品,每一个特定工厂用于创建一个对应的产品.模式的简易UML图例如下 下面是使用AspectJ实现的工厂方法模式UML图 抽象方面FactoryMethodProtocol很简单只定义了抽象pointcut createMethod用于捕捉特定应用的创建方法(也可以省略). FactoryMethodProtocol抽象方面 public abstract aspect FactoryMet