您的位置:首页 > 其它

工厂方法模式(Factory Method Pattern)

2008-07-14 11:40 288 查看

一、 工厂方法(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 );

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: