工厂方法模式
2012-11-30 17:11
190 查看
一、 工厂方法(Factory Method)模式
工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟至其子类。因为简单工厂模式一定程度上会违背开方-封闭的原则,但工厂方法由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点,工厂方法模式是简单工厂模式的进一步抽象与推广,还有工厂方法更复杂的层次结构,可以应用于产品结果复杂的场合。
在工厂方法模式中,核心的工厂类不再负责产品的创建,而是把具体的创建工作交给子类去完成。核心的工厂类只负责给出具体工厂必须实现的接口,而不会去接触,实例化任何一个产品。这使得工厂访求模式可以允许系统在不修改工厂角色的情况下引进新产品。
二、 工厂方法模式的角色与结构:
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
结构图:
Cilent 调用范例
工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法使一个类的实例化延迟至其子类。因为简单工厂模式一定程度上会违背开方-封闭的原则,但工厂方法由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点,工厂方法模式是简单工厂模式的进一步抽象与推广,还有工厂方法更复杂的层次结构,可以应用于产品结果复杂的场合。
在工厂方法模式中,核心的工厂类不再负责产品的创建,而是把具体的创建工作交给子类去完成。核心的工厂类只负责给出具体工厂必须实现的接口,而不会去接触,实例化任何一个产品。这使得工厂访求模式可以允许系统在不修改工厂角色的情况下引进新产品。
二、 工厂方法模式的角色与结构:
抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。
抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在上图中,这个角色是Light。
具体产品(Concrete Product)角色:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
结构图:
Cilent 调用范例
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 工厂方法模式 { class Program { static void Main(string[] args) { IFactory operFactory = new AddFactory(); Operation oper = operFactory.CreateOperation(); oper.NumberA = 1; oper.NumberB = 2; double result = oper.GetResult(); Console.WriteLine(result); Console.Read(); } } }
相关文章推荐
- 工厂方法模式
- [翻译]在asp.net 2.0中使用母版页和工厂方法模式
- 在asp.net 2.0中使用母版页和工厂方法模式
- 工厂方法模式和抽象工厂模式之比较
- 工厂方法模式
- 简单工厂模式与工厂方法模式
- 1.Factory Method (工厂方法模式、虚构造子模式、多态工厂模式)
- 工厂方法模式(Factory Method)
- 工厂方法模式解析例子
- 工厂方法模式
- .NET设计模式(2): 工厂方法模式
- 设计模式笔记(5)---工厂方法模式(创建型)
- 工厂方法模式
- 王海挺学设计模式-工厂方法模式
- 研磨设计模式之 工厂方法模式-3
- 简单工厂模式、工厂方法模式和抽象工厂模式
- 设计模式之八 工厂方法模式
- C#面向对象设计模式纵横谈(5):Factory Method 工厂方法模式(创建型模式)
- 工厂方法模式(Factory Method)
- 简单工厂模式、工厂方法模式和抽象工厂模式异同