using System;
using System.Collections;
namespace FactoryDesignPattern
{
class Program
{
static void Main(string[] args)
{
Page p = new CatalogPage();
p.AddMoudle();
p.DisplayPage();
p = new ManualPage();
p.AddMoudle();
p.DisplayPage();
Console.ReadLine();
}
}
public abstract class Page
{
protected ArrayList pageCompositor = new ArrayList();
public abstract void AddMoudle();
public abstract void DisplayPage();
}
public class CatalogPage : Page
{
public CatalogPage() { this.AddMoudle(); }
public override void AddMoudle()
{
this.pageCompositor.Clear();
this.pageCompositor.Add(new FeatureModule());
this.pageCompositor.Add(new PictureModule());
}
public override void DisplayPage()
{
foreach (Module item in this.pageCompositor)
item.SomeModule();
}
}
public class FeatureModule :Module
{
public FeatureModule() { }
public override void SomeModule()
{
Console.WriteLine("Feature content.");
}
}
public class PictureModule : Module
{
public PictureModule() { }
public override void SomeModule()
{
Console.WriteLine("Picture content.");
}
}
public abstract class Module
{
public abstract void SomeModule();
}
public class ManualPage : Page
{
public ManualPage() { }
public override void AddMoudle()
{
this.pageCompositor.Clear();
this.pageCompositor.Add(new TechnicalModule());
this.pageCompositor.Add(new PictureModule());
this.pageCompositor.Add(new InstructionModule());
}
public override void DisplayPage()
{
Console.WriteLine("Manual page contents: ");
foreach(Module c in this.pageCompositor)
c.SomeModule();
Console.WriteLine();
}
}
public class TechnicalModule :Module
{
public override void SomeModule()
{
Console.WriteLine("Techinical content.");
}
}
public class InstructionModule :Module
{
public override void SomeModule()
{
Console.WriteLine("Instruction content.");
}
}
}
No comments:
Post a Comment