乐在个中设计方式(C#) – 代理方式(Proxy Pattern)

[索引页] [源码下载]

乐在在那之中设计方式(C#) – 代理形式(Proxy Pattern)

作者:webabcd

介绍
为别的对象提供一个代理以控制对那几个指标的拜访。

示例
有1个Message实体类,某目的对它的操作有Insert()和Get()方法,用三个代理来决定对这几个目的的拜会。
图片 1

MessageModel

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

IMessage

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

SqlMessage

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

MessageProxy

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

client

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

运作结果
True
SQL格局得到Message 二零零五-4-1 16:31:24

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

OK
[源码下载]

相关文章