C#设计模式(5)-Factory Method Pattern
2010-04-30 11:18
239 查看
一、 工厂方法(Factory Method)模式
工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。
在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。
在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应。
二、 Factory Method模式角色与结构:
using System;public abstract class Light
public class BulbLight : Light
public class TubeLight : Light
public abstract class Creator
public class BulbCreator : Creator
public class TubeCreator : Creator
public class Client
// Factory Method pattern -- Real World example
using System;
using System.Collections;
// "Product"
abstract class Page
// "ConcreteProduct"
class SkillsPage : Page
// "ConcreteProduct"
class EducationPage : Page
// "ConcreteProduct"
class ExperiencePage : Page
// "ConcreteProduct"
class IntroductionPage : Page
// "ConcreteProduct"
class ResultsPage : Page
// "ConcreteProduct"
class ConclusionPage : Page
// "ConcreteProduct"
class SummaryPage : Page
// "ConcreteProduct"
class BibliographyPage : Page
// "Creator"
abstract class Document
// "ConcreteCreator"
class Resume : Document
// "ConcreteCreator"
class Report : Document
class FactoryMethodApp
{
public static void Main( string[] args )
{
Document[] docs = new Document[ 2 ];
// Note: constructors call Factory Method
docs[0] = new Resume();
docs[1] = new Report();
// Display document pages
foreach( Document document in docs )
{
Console.WriteLine( " " + document + " ------- " );
foreach( Page page in document.Pages )
Console.WriteLine( " " + page );
}
}
}
参考文献:
阎宏,《Java与模式》,电子工业出版社
[美]James W. Cooper,《C#设计模式》,电子工业出版社
[美]Alan Shalloway James R. Trott,《Design Patterns Explained》,中国电力出版社
[美]Robert C. Martin,《敏捷软件开发-原则、模式与实践》,清华大学出版社
[美]Don Box, Chris Sells,《.NET本质论 第1卷:公共语言运行库》,中国电力出版社
相关文章推荐
- C#设计模式(5)-Factory Method Pattern
- C#设计模式(5)-Factory Method Pattern
- C#设计模式(5)-Factory Method Pattern
- C#设计模式(5)-Factory Method Pattern
- 抽象工厂模式(Abstract Factory Method Pattern)
- 无废话C#设计模式之四:Factory Method
- Factory Method Pattern
- C#设计模式(5)-Factory Method Pattern
- Factory Method Pattern 工厂模式 学习笔记
- Swift 01 工厂方法模式 Factory method pattern
- C#设计模式(3)——工厂方法模式(Factory Method)
- 23种设计模式之-----工厂方法模式(Method Factory pattern)
- 设计模式系列(四)简单工厂模式(Simple Factory Pattern/Static Factory Method)
- 设计模式(四)-工厂模式(Factory Method Pattern/Factory Pattern)——将实例的生成交给子类
- 无废话C#设计模式之四:Factory Method
- DesignPattern_Java:Factory Method Pattern
- Head First Design Pattern - 4 - This week's interview: Factory Method and Abstract Facotry, on each other
- [导入]Factory Method Design Pattern
- Factory method pattern
- swift - The Factory Method Pattern