您的位置:首页 > 其它

【设计模式】之 Factory Method 工厂方法

2012-03-02 16:01 363 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace DesignFactory.FactoryMethod
{
#region Product
/// <summary>
/// 工厂方法模式有关的模式:
/// 模板方法模式,MVC模式,享元模式,备忘录模式
/// </summary>
abstract class Page
{ }
#endregion

#region ConcteateProduct

class SkillsPage : Page
{ }

class EducationPage : Page
{ }

class ExperiencePage : Page
{ }

class IntroductionPage : Page
{ }

class ResultsPage : Page
{ }

class ConclusionPage : Page
{ }

class SummaryPage : Page
{ }

class BibiographyPage : Page
{ }

#endregion

#region Creator
abstract class Document
{
/// <summary>
/// Fields
/// </summary>
protected ArrayList pages = new ArrayList();

/// <summary>
/// Constructor
/// </summary>
public Document()
{
this.CreatePages();
}

/// <summary>
/// Properties
/// </summary>
public ArrayList Pages
{
get { return pages; }
}

/// <summary>
/// ConcreteCreator
/// </summary>
abstract public void CreatePages();

}
#endregion

#region ContreteCreator
class Resume : Document
{
public override void CreatePages()
{
pages.Add(new SkillsPage());
pages.Add(new EducationPage());
pages.Add(new ExperiencePage());
}
}

class Report : Document
{
public override void CreatePages()
{
pages.Add(new IntroductionPage());
pages.Add(new ResultsPage());
pages.Add(new ConclusionPage());
pages.Add(new SummaryPage());
pages.Add(new BibiographyPage());
}
}

#endregion

#region FactoryMethodApp test
class FactoryMethodApp
{
public static void Main(string[] args)
{
Document[] docs = new Document[2];
//Note: constructor call Factory Method
docs[0] = new Resume();
docs[1] = new Report();

//Display document pages
foreach (Document item in docs)
{
Console.WriteLine(" " + item + "-------------");
foreach (Page page in item.Pages)
{
Console.WriteLine(" " + page);
}
}
}

}
#endregion

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