DesignPattern - Decorator

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>");
       
    }
}

posted @ 2008-10-21 16:30  游侠_1  阅读(131)  评论(0编辑  收藏  举报