vs2005+C#+.net 2.0 using System;using System.Collections.Generic;using System.Text;using System.Collections;namespace FactoryMethodPattern...{ //Production base class. abstract class Page ...{ } abstract class Document ...{ protected ArrayList pages = new ArrayList(); abstract public void CreatPage(); public Document() ...{ this.CreatPage(); } public ArrayList Pages ...{ get...{ return pages; } } } class SkillPage : Page ...{ } class EducationPage : Page ...{ } class ExperiencePage : Page ...{ } class IntroductionPage : Page ...{ } class ResultPage : Page ...{ } class ConclusionPage : Page ...{ } class SummaryPage : Page ...{ } class BibiographyPage : Page ...{ } class Resume : Document ...{ public override void CreatPage() ...{ pages.Add(new SkillPage()); pages.Add(new EducationPage()); pages.Add(new ExperiencePage()); } } class Report : Document ...{ public override void CreatPage() ...{ pages.Add(new IntroductionPage()); pages.Add(new ResultPage()); pages.Add(new ConclusionPage()); pages.Add(new SummaryPage()); pages.Add(new BibiographyPage()); } } class Client ...{ static void Main(string[] args) ...{ Document[] docs =...{ new Resume(), new Report() }; foreach (Document document in docs) ...{ Console.WriteLine(" =======" + document + "========"); foreach (Page page in document.Pages) Console.WriteLine(" " + page); } Console.Read(); } }}