My AbstractFactory in C#

//MyAbstractFactory
using System;

///////////////Basic Products////////////////
//AbstractProducts
abstract class FontsStyle
{
 public string stylestring;
};

abstract class TablesStyle
{
 public string stylestring;
};
//RealProducts
class FontsStyleA:FontsStyle
{
 public FontsStyleA(){stylestring="FontsStyleA";}
};
class FontsStyleB:FontsStyle
{
 public FontsStyleB(){stylestring="FontsStyleB";}
};

class TablesStyleA:TablesStyle
{
 public TablesStyleA(){stylestring="TablesStyleA";}
};
class TablesStyleB:TablesStyle
{
 public TablesStyleB(){stylestring="TablesStyleB";}
};

//////////////Basic Products////////////////

//////////////Style Factorys////////////////

abstract class StyleFactory
{
 abstract public FontsStyle createFontsStyle();
 abstract public TablesStyle createTablesStyle();
};

class StyleA:StyleFactory
{
 override public FontsStyle createFontsStyle()
 {
  return new FontsStyleA();
 }
    override public TablesStyle createTablesStyle()
 {
  return new TablesStyleA();
 }
};

class StyleB:StyleFactory
{
 override public FontsStyle createFontsStyle()
 {
  return new FontsStyleB();
 }
    override public TablesStyle createTablesStyle()
 {
  return new TablesStyleB();
 }
};
//////////////Style Factorys////////////////

//////////////////////HomePage is the product as last
class HomePage
{
 private FontsStyle fontsstyle;
 private TablesStyle tablesstyle;

 private string htmlcode="<html><body><table style='tablesstyle'><tr><td><font style='fontsstyle'>HelloWorld!</font></td></tr></table></body></html>";

    public HomePage(StyleFactory stylefactory)
 {
       fontsstyle=stylefactory.createFontsStyle();
       tablesstyle=stylefactory.createTablesStyle();
    htmlcode=htmlcode.Replace("fontsstyle",fontsstyle.stylestring);
    htmlcode=htmlcode.Replace("tablesstyle",tablesstyle.stylestring);
    }

 public void PrintHTMLCode()
 {
  Console.WriteLine(htmlcode);
 }
 public void SetStyle(string filename)
 {
 }

};

//MyAbstractFactory App
class TestApp
{
 public static void Main( string[] args )
 {
  StyleFactory stylea=new StyleA();
  HomePage samplepage=new HomePage(stylea);
  samplepage.PrintHTMLCode();

  StyleFactory styleb=new StyleB();
  samplepage=new HomePage(styleb);
  samplepage.PrintHTMLCode();
  
  while(true){}
 }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章