上一篇:c#范型体验1 >>
My Builder in C#
using System;
using System.Collections;
///////////////////////product///////////////////////
class HomePage
{
//Fields
private string pagetype;
private string samplecode;
private Hashtable parts=new Hashtable();
//Construcrors
public HomePage(string pagetype)
{
this.pagetype=pagetype;
samplecode="<html><body>parttable,partspan</body></html>";
}
//Indexers
public object this [string key]
{
get{return parts[key];}
set{parts[key]=value;}
}
//Methods
public void PrintHTMLCode()
{
samplecode=samplecode.Replace("parttable",parts["table"].ToString());
samplecode=samplecode.Replace("partspan",parts["span"].ToString());
Console.WriteLine(samplecode);
}
};
///////////////////////product///////////////////////
//////////////////////director////////////////////////
class PageDirector
{
public void Construct(PageBuilder pagebuilder)
{
pagebuilder.BuildFrame();
pagebuilder.BuildTable();
pagebuilder.BuildSpan();
}
};
//////////////////////director////////////////////////
///////////////////////builder///////////////////////
abstract class PageBuilder
{
//Fields
protected HomePage homepage;
//Properties
public HomePage HomePage
{
get{return homepage;}
}
//Methods
abstract public void BuildFrame();
abstract public void BuildTable();
abstract public void BuildSpan();
}
class CoolBuilder : PageBuilder
{
override public void BuildFrame()
{
homepage=new HomePage("coolpage");
}
override public void BuildTable()
{
homepage["table"]="<table color=cool><tr><td><td></tr></table>";
}
override public void BuildSpan()
{
homepage["span"]="<span color=cool></span>";
}
};
class WormBuilder : PageBuilder
{
override public void BuildFrame()
{
homepage=new HomePage("wormpage");
}
override public void BuildTable()
{
homepage["table"]="<table color=worm><tr><td><td></tr></table>";
}
override public void BuildSpan()
{
homepage["span"]="<span color=worm></span>";
}
};
class ClearBuilder : PageBuilder
{
override public void BuildFrame()
{
homepage=new HomePage("clearpage");
}
override public void BuildTable()
{
homepage["table"]="<table color=clear><tr><td><td></tr></table>";
}
override public void BuildSpan()
{
homepage["span"]="<span color=clear></span>";
}
};
///////////////////////builder///////////////////////
//MyBuilder test
class TestApp
{
public static void Main(string[] args)
{
PageBuilder b1=new CoolBuilder();
PageBuilder b2=new WormBuilder();
PageBuilder b3=new ClearBuilder();
PageDirector pagedirector=new PageDirector();
pagedirector.Construct(b1);
pagedirector.Construct(b2);
pagedirector.Construct(b3);
b1.HomePage.PrintHTMLCode();
b2.HomePage.PrintHTMLCode();
b3.HomePage.PrintHTMLCode();
while(true){}
}
};
下一篇:My AbstractFactory in C# >>
相关文章:
- · vb / C# 中报表套打的轻松实现
- · 改进的C#插件构架
- · 使用C#进行Reflection编程
- · c# DataGrid 使用 小tip (1)
- · c# DataGrid 使用 小tip (1)
- · C# 检查字符串,防SQL注入攻击
- · 用正则表达式解析C#文件(updated)
- · C#插件构架实战
- · 把网友的RSA加密代码转换到C#
- · c# ArrayList 的 Sort()方法的使用
- · 把RichTextBox中的文本保存到Sql Server中(C#)
- · MapObjects2.2 在C#中的应用(基本地图功能
- · C#程序员面试(一)答案
- · C# 把指定控件显示在最上面
- · 在图片上写字 (C#)
- · 得到系统进程和结束某个指定的进程 (C#)
- · c#v2.0 扩展特性 翻译(2)
- · Visual C# .NET Express Beta 1 试用手记 1
- · Using Attributes in C#
- · The C# Programming Language Notes
- · 获取Sql服务器列表 (C#)
- · C#-对称加密的一个例子
- · 关于webservice的异步调用简单实例
- · c#v2.0 扩展特性 翻译(1)
- · C#陷阱:int i = 10; i += i++; i = ?
- · C# 编码规范
- · 如何动态加载控件以及插件编程思想(C#)
- · Implementing the Singleton Pattern in C#
- · C#事件机制学习
- · 如何才能学好C#(转载)
- · C#实现的基本算法
- · C#事件机制归纳(下)
- · C#事件机制归纳(上)
- · (C#)利用反射动态调用类成员
- · IDesign C#编码规范(之五)
- · C#中的正则表达式(1)
- · The C# Programming Language Notes
- · The C# Programming Language Notes
