CheckUserWrapper using System; using System.Collections.Generic; using System.Text; namespace Pattern.Decorator { /**//// <summary> /// 扩展出用户验证的功能(ConcreteDecorator) /// </summary> public class CheckUserWrapper : AbstractMessageWrapper { /**//// <summary> /// 构造函数 /// </summary> /// <param name="abstractMessage">AbstractMessage</param> public CheckUserWrapper(AbstractMessage abstractMessage) : base(abstractMessage) { } /**//// <summary> /// 获取Message /// </summary> /// <returns></returns> public override List<MessageModel> Get() { List<MessageModel> l = base.Get(); foreach (MessageModel mm in l) { mm.Message += "(经过用户验证)"; } return l; } /**//// <summary> /// 插入Message /// </summary> /// <param name="mm">Message实体对象</param> /// <returns></returns> public override bool Insert(MessageModel mm) { // 在这里扩展功能 return base.Insert(mm); } } }
CheckInputWrapper using System; using System.Collections.Generic; using System.Text; namespace Pattern.Decorator { /**//// <summary> /// 扩展出输入验证的功能(ConcreteDecorator) /// </summary> public class CheckInputWrapper : AbstractMessageWrapper { /**//// <summary> /// 构造函数 /// </summary> /// <param name="abstractMessage">AbstractMessage</param> public CheckInputWrapper(AbstractMessage abstractMessage) : base(abstractMessage) { } /**//// <summary> /// 获取Message /// </summary> /// <returns></returns> public override List<MessageModel> Get() { List<MessageModel> l = base.Get(); foreach (MessageModel mm in l) { mm.Message += "(经过输入验证)"; } return l; } /**//// <summary> /// 插入Message /// </summary> /// <param name="mm">Message实体对象</param> /// <returns></returns> public override bool Insert(MessageModel mm) { // 在这里扩展功能 return base.Insert(mm); } } }
Test 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; using Pattern.Decorator; public partial class Decorator : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { AbstractMessage message = new SqlMessage(); AbstractMessageWrapper amr = new CheckUserWrapper(message); Response.Write(amr.Get()[0].Message + " " + amr.Get()[0].PublishTime.ToString()); Response.Write("<br />"); AbstractMessageWrapper amr2 = new CheckInputWrapper(message); Response.Write(amr2.Get()[0].Message + " " + amr2.Get()[0].PublishTime.ToString()); Response.Write("<br />"); AbstractMessageWrapper amr3 = new CheckUserWrapper(message); AbstractMessageWrapper amr4 = new CheckInputWrapper(amr3); Response.Write(amr4.Get()[0].Message + " " + amr4.Get()[0].PublishTime.ToString()); Response.Write("<br />"); } }