您的位置:首页 > 其它

装饰模式个人的一些理解

2012-12-23 22:30 316 查看
以下代码是个人对装饰模式的理解,备忘

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TestApp.装饰
{
public partial class 装饰2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Water water = new Water();
JiaGong jiagong = new JiaGong();
纯净水加工厂 chunjingshui = new 纯净水加工厂();
糖水加工厂 tangshui = new 糖水加工厂();

jiagong.SetComponent(water);
chunjingshui.SetComponent(jiagong);
tangshui.SetComponent(chunjingshui);

tangshui.加工();
}
}

public class Water
{
public virtual void 加工()
{
HttpContext.Current.Response.Write("<hr/>");
HttpContext.Current.Response.Write("<br/>原始的河水,里面还有些杂质....");
}
}

public class JiaGong : Water
{
private Water _waterResouce;

public void SetComponent(Water water)
{
_waterResouce = water;
}

public override void 加工()
{
if (_waterResouce != null)
{
_waterResouce.加工();
}
}
}

public class 纯净水加工厂 : JiaGong
{
public override void 加工()
{
HttpContext.Current.Response.Write("<hr/>");
过滤();
HttpContext.Current.Response.Write("<br/>现在变成了纯净数....");
base.加工();
}

public void 过滤()
{
HttpContext.Current.Response.Write("<br/>河水中的杂质已过滤完毕....");
}
}

public class 糖水加工厂 : JiaGong
{
public override void 加工()
{
HttpContext.Current.Response.Write("<hr/>");
加糖();
HttpContext.Current.Response.Write("<br/>糖水制作完毕....");
base.加工();
}

public void 加糖()
{
HttpContext.Current.Response.Write("<br/>往水中加糖....");
}
}
}


最终运行效果图如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: