设计模式之 - 工厂方法模式 (Factory Method design pattern)
2013-07-18 19:46
591 查看
1. 模式意图:
定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
2. 别名(Virtual Constructor)
3. 结构
4. 工厂方法模式C#实现
5. 应用场景:
当一个类不知道它所创建的对象的类的时候。
当一个类希望由它的子类来制定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮组子类中的某一个,并且你希望将哪一个帮助类是代理者这一信息局部化的时候。
创建对象需要大量重复的代码。
创建对象需要访问某些信息,而这些信息不应该包含在复合类中。
创建对象的生命周期必须集中管理,以保证在整个程序中具有一致的行为。
i.e.
6. 局限性:
第一个局限是,重构已经存在的类会破坏客户端代码。
第二个局限是,因为工厂方法所实例化的类具有私有的构造方法,所以这些类就不能扩展了。因为任何子类都必须调用父类的构造方法,但父类的私有构造方法是不能被子类调用的。
第三个局限是,如果确实扩展了工厂方法所实例化的类(例如将构造方法设为保护的,虽然有风险但也是可行的),子类必须具有所有工厂方法的一套实现。
References:
http://zh.wikipedia.org/wiki/%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95
《大话设计模式》
google.com
定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。
2. 别名(Virtual Constructor)
3. 结构
4. 工厂方法模式C#实现
interface Product { public void productMethod(); } class ConcreteProduct : Product { public void productMethod() { Console.WriteLine("产品"); } } interface Creator { public Product createProduct(); } class ConcreteCreator: Creator { public IProduct createProduct() { return new Product(); } } public class Client { static void main() { Creator creator = new ConcreteCreator(); Product Product = creator.createProduct(); prodect.productMethod(); } }
5. 应用场景:
当一个类不知道它所创建的对象的类的时候。
当一个类希望由它的子类来制定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮组子类中的某一个,并且你希望将哪一个帮助类是代理者这一信息局部化的时候。
创建对象需要大量重复的代码。
创建对象需要访问某些信息,而这些信息不应该包含在复合类中。
创建对象的生命周期必须集中管理,以保证在整个程序中具有一致的行为。
i.e.
6. 局限性:
第一个局限是,重构已经存在的类会破坏客户端代码。
第二个局限是,因为工厂方法所实例化的类具有私有的构造方法,所以这些类就不能扩展了。因为任何子类都必须调用父类的构造方法,但父类的私有构造方法是不能被子类调用的。
第三个局限是,如果确实扩展了工厂方法所实例化的类(例如将构造方法设为保护的,虽然有风险但也是可行的),子类必须具有所有工厂方法的一套实现。
References:
http://zh.wikipedia.org/wiki/%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95
《大话设计模式》
google.com
相关文章推荐
- 23种设计模式之-----工厂方法模式(Method Factory pattern)
- 【设计模式】Factory Method Pattern——工厂方法模式
- 设计模式 Design Parttern ——工厂方法模式 Factory Method
- 设计模式之( Factory Method Pattern--工厂方法模式)
- 设计模式2:Factory Method Pattern(工厂方法模式)
- 四.创建型设计模式——Factory Method Pattern(工厂方法模式)
- C#设计模式(5)-Factory Method Pattern
- 简单工厂设计模式(Simple Factory Design Pattern)
- 设计模式读书笔记之工厂方法模式(Factory method)
- Java开发之设计模式--工厂方法模式(Factory Method)
- 设计模式之三——工厂方法模式(Factory Method)&抽象工厂模式(AbstractFacotry)
- VB.net设计模式之工厂方法,抽象工厂方法(Factory Method Pattern,Abstract Factory Method Pattern)
- 设计模式之一 工厂方法模式(Factory Method)
- 设计模式——工厂方法模式(Factory Method)
- IOS设计模式浅析之工厂方法模式(Factory Method)
- Java开发中的23种设计模式之一:工厂方法模式(Factory Method)
- Java设计模式-工厂方法模式(Factory Method)
- 设计模式之一---工厂方法模式【Factory Method模式】
- 步步为营 .NET 设计模式学习笔记 二十四、Factory Method(工厂方法模式)
- Java经典设计模式-创建型模式-工厂方法模式(Factory Method)