using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//在软件系统中,有时候我们会使用继承来扩展对象的功能,但是由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),
//各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?
//从而使得任何“功能扩展变化”所导致的影响将为最低?这就是本文要讲的Decorator模式。
public partial class DesignPattern_Decorator : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
KaoChuan kao = new KaoChuan();
AddLaJiao addl = new AddLaJiao(kao);//加辣椒
AddMaJiang addm = new AddMaJiang(addl);
addm.Manage();
}
}
public class KaoChuan//烤串类
{
public virtual void Manage()
{
HttpContext.Current.Response.Write("正儿八经的烤个串<br>");
}
}
public class Decorator:KaoChuan //装饰类
{
public KaoChuan kaoChuan;
public Decorator(KaoChuan kaoChuan)
{
this.kaoChuan = kaoChuan;
}
}
public class AddLaJiao : Decorator//加辣椒
{
public AddLaJiao(KaoChuan kaoChuan):base(kaoChuan)
{
}
public override void Manage()
{
kaoChuan.Manage();
HttpContext.Current.Response.Write("放辣椒<br>");
}
}
public class AddMaJiang : Decorator//加麻酱
{
public AddMaJiang(KaoChuan kaoChuan):base(kaoChuan)
{
}
public override void Manage()
{
kaoChuan.Manage();
HttpContext.Current.Response.Write("加麻酱<br>");
}
}