//MyFactoryMethod
using System;
using System.Collections;
//SinglePage class,which build the at last product,part element
//----top class
abstract class SinglePage
{
};
//----element1
class RegisterPage:SinglePage
{
};
//----element2
class LoginPage:SinglePage
{
};
//----element3
class IndexPage:SinglePage
{
};
//----element4
class TitlePage:SinglePage
{
};
//----element5
class ContentPage:SinglePage
{
};
//----element6
class PostPage:SinglePage
{
};
//----element7
class ReplyPage:SinglePage
{
};
//----------------------------------------------end of Page class
//HomePage class,FactoryMethod is in this class,creater
//----top class
abstract class HomePage
{
//Fields,the aim page data
protected ArrayList pages=new ArrayList();
//Properties
public ArrayList Pages
{
get{return pages;}
}
//Methods
public HomePage()
{
this.CreateHomePage();
}
abstract public void CreateHomePage();
};
//----concreteclass1
class Forum:HomePage
{
override public void CreateHomePage()
{
Pages.Add(new RegisterPage());
Pages.Add(new LoginPage());
Pages.Add(new IndexPage());
Pages.Add(new TitlePage());
Pages.Add(new ContentPage());
Pages.Add(new PostPage());
Pages.Add(new ReplyPage());
}
};
//----concreteclass2
class GuestBook:HomePage
{
override public void CreateHomePage()
{
Pages.Add(new RegisterPage());
Pages.Add(new LoginPage());
Pages.Add(new ContentPage());
Pages.Add(new ReplyPage());
}
};
//----------------------------------------------end of HomePage class
//Test
class TestApp
{
public static void Main(string[] args)
{
HomePage aforum=new Forum();
HomePage aguestbook=new GuestBook();
foreach(SinglePage singlepage in aforum.Pages)
{
Console.WriteLine("In a forum homepage contians {0}",singlepage);
}
foreach(SinglePage singlepage in aguestbook.Pages)
{
Console.WriteLine("In a guestbook homepage contians {0}",singlepage);
}
while(true){}
}
};