C#乐在其中设计模式(C#) – 代理模式(Proxy Pattern)

[索引页] [源码下载]

乐在其中设计模式(C#) – 代理模式(Proxy Pattern)

作者:webabcd

介绍
也任何对象提供一个摄以控制对这目标的访问。

示例
发生一个Message实体类,某目标对它们的操作发生Insert()和Get()方法,用一个摄来决定对斯目标的顾。
C# 1

MessageModel

C# 2using System;
C# 3using System.Collections.Generic;
C# 4using System.Text;
C# 5
C# 6namespace Pattern.Proxy
C# 7C# 8C# 9{
C# 10C# 11    /**//// <summary>
C# 12    /// Message实体类
C# 13    /// </summary>
C# 14    public class MessageModel
C# 15C# 16    C# 17{
C# 18C# 19        /**//// <summary>
C# 20        /// 构造函数
C# 21        /// </summary>
C# 22        /// <param name=”msg”>Message内容</param>
C# 23        /// <param name=”pt”>Message发布时间</param>
C# 24        public MessageModel(string msg, DateTime pt)
C# 25C# 26        C# 27{
C# 28            this._message = msg;
C# 29            this._publishTime = pt;
C# 30        }
C# 31
C# 32        private string _message;
C# 33C# 34        /**//// <summary>
C# 35        /// Message内容
C# 36        /// </summary>
C# 37        public string Message
C# 38C# 39        C# 40{
C# 41C# 42            get C# 43{ return _message; }
C# 44C# 45            set C# 46{ _message = value; }
C# 47        }
C# 48
C# 49        private DateTime _publishTime;
C# 50C# 51        /**//// <summary>
C# 52        /// Message发布时间
C# 53        /// </summary>
C# 54        public DateTime PublishTime
C# 55C# 56        C# 57{
C# 58C# 59            get C# 60{ return _publishTime; }
C# 61C# 62            set C# 63{ _publishTime = value; }
C# 64        }
C# 65    }
C# 66}
C# 67

IMessage

C# 68using System;
C# 69using System.Collections.Generic;
C# 70using System.Text;
C# 71
C# 72namespace Pattern.Proxy
C# 73C# 74C# 75{
C# 76C# 77    /**//// <summary>
C# 78    /// 对Message操作的接口
C# 79    /// </summary>
C# 80    public interface IMessage
C# 81C# 82    C# 83{
C# 84C# 85        /**//// <summary>
C# 86        /// 获取Message
C# 87        /// </summary>
C# 88        /// <returns></returns>
C# 89        List<MessageModel> Get();
C# 90
C# 91C# 92        /**//// <summary>
C# 93        /// 插入Message
C# 94        /// </summary>
C# 95        /// <param name=”mm”>Message实体对象</param>
C# 96        /// <returns></returns>
C# 97        bool Insert(MessageModel mm);
C# 98    }
C# 99}
C# 100

SqlMessage

C# 101using System;
C# 102using System.Collections.Generic;
C# 103using System.Text;
C# 104
C# 105namespace Pattern.Proxy
C# 106C# 107C# 108{
C# 109C# 110    /**//// <summary>
C# 111    /// Sql方式操作Message
C# 112    /// </summary>
C# 113    public class SqlMessage : IMessage
C# 114C# 115    C# 116{
C# 117C# 118        /**//// <summary>
C# 119        /// 获取Message
C# 120        /// </summary>
C# 121        /// <returns></returns>
C# 122        public List<MessageModel> Get()
C# 123C# 124        C# 125{
C# 126            List<MessageModel> l = new List<MessageModel>();
C# 127            l.Add(new MessageModel(“SQL方式获得Message”, DateTime.Now));
C# 128
C# 129            return l;
C# 130        }
C# 131
C# 132C# 133        /**//// <summary>
C# 134        /// 插入Message
C# 135        /// </summary>
C# 136        /// <param name=”mm”>Message实体对象</param>
C# 137        /// <returns></returns>
C# 138        public bool Insert(MessageModel mm)
C# 139C# 140        C# 141{
C# 142            // 代码略
C# 143            return true;
C# 144        }
C# 145    }
C# 146}
C# 147

MessageProxy

C# 148using System;
C# 149using System.Collections.Generic;
C# 150using System.Text;
C# 151
C# 152namespace Pattern.Proxy
C# 153C# 154C# 155{
C# 156C# 157    /**//// <summary>
C# 158    /// 代理类
C# 159    /// </summary>
C# 160    public class MessageProxy : IMessage
C# 161C# 162    C# 163{
C# 164        SqlMessage _sqlMessage;
C# 165
C# 166C# 167        /**//// <summary>
C# 168        /// 构造函数
C# 169        /// </summary>
C# 170        public MessageProxy()
C# 171C# 172        C# 173{
C# 174            _sqlMessage = new SqlMessage();
C# 175        }
C# 176
C# 177C# 178        /**//// <summary>
C# 179        /// 获取Message
C# 180        /// </summary>
C# 181        /// <returns></returns>
C# 182        public List<MessageModel> Get()
C# 183C# 184        C# 185{
C# 186            return _sqlMessage.Get();
C# 187        }
C# 188
C# 189C# 190        /**//// <summary>
C# 191        /// 插入Message
C# 192        /// </summary>
C# 193        /// <param name=”mm”>Message实体对象</param>
C# 194        /// <returns></returns>
C# 195        public bool Insert(MessageModel mm)
C# 196C# 197        C# 198{
C# 199            return _sqlMessage.Insert(mm);
C# 200        }
C# 201    }
C# 202}
C# 203

client

C# 204using System;
C# 205using System.Data;
C# 206using System.Configuration;
C# 207using System.Collections;
C# 208using System.Web;
C# 209using System.Web.Security;
C# 210using System.Web.UI;
C# 211using System.Web.UI.WebControls;
C# 212using System.Web.UI.WebControls.WebParts;
C# 213using System.Web.UI.HtmlControls;
C# 214
C# 215using Pattern.Proxy;
C# 216
C# 217public partial class Proxy : System.Web.UI.Page
C# 218C# 219C# 220{
C# 221    protected void Page_Load(object sender, EventArgs e)
C# 222C# 223    C# 224{
C# 225        MessageProxy m = new MessageProxy();
C# 226        Response.Write(m.Insert(new MessageModel(“插入”, DateTime.Now)));
C# 227        Response.Write(“<br />”);
C# 228        Response.Write(m.Get()[0].Message + ” ” + m.Get()[0].PublishTime.ToString());
C# 229    }
C# 230}
C# 231

运行结果
True
SQL方式获得Message 2007-4-1 16:31:24

参考
http://www.dofactory.com/Patterns/PatternProxy.aspx

OK
[源码下载]

相关文章