博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二十四种设计模式:代理模式(Proxy Pattern)
阅读量:6202 次
发布时间:2019-06-21

本文共 3447 字,大约阅读时间需要 11 分钟。

代理模式(Proxy Pattern)

 

介绍

为其他对象提供一个代理以控制对这个对象的访问。

示例
有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这个对象的访问。

  MessageModel

using System;using System.Collections.Generic;using System.Text;namespace Pattern.Proxy{    ///     /// Message实体类    ///     public class MessageModel    {        ///         /// 构造函数        ///         /// Message内容        /// Message发布时间        public MessageModel(string msg, DateTime pt)        {            this._message = msg;            this._publishTime = pt;        }        private string _message;        ///         /// Message内容        ///         public string Message        {            get { return _message; }            set { _message = value; }        }        private DateTime _publishTime;        ///         /// Message发布时间        ///         public DateTime PublishTime        {            get { return _publishTime; }            set { _publishTime = value; }        }    }}

  IMessage

using System;using System.Collections.Generic;using System.Text;namespace Pattern.Proxy{    ///     /// 对Message操作的接口    ///     public interface IMessage    {        ///         /// 获取Message        ///         /// 
List
Get(); ///
/// 插入Message /// ///
Message实体对象 ///
bool Insert(MessageModel mm); }}

  SqlMessage

using System;using System.Collections.Generic;using System.Text;namespace Pattern.Proxy{    ///     /// Sql方式操作Message    ///     public class SqlMessage : IMessage    {        ///         /// 获取Message        ///         /// 
public List
Get() { List
l = new List
(); l.Add(new MessageModel("SQL方式获取Message", DateTime.Now)); return l; } ///
/// 插入Message /// ///
Message实体对象 ///
public bool Insert(MessageModel mm) { // 代码略 return true; } }}

  MessageProxy

using System;using System.Collections.Generic;using System.Text;namespace Pattern.Proxy{    ///     /// 代理类    ///     public class MessageProxy : IMessage    {        SqlMessage _sqlMessage;        ///         /// 构造函数        ///         public MessageProxy()        {            _sqlMessage = new SqlMessage();        }        ///         /// 获取Message        ///         /// 
public List
Get() { return _sqlMessage.Get(); } ///
/// 插入Message /// ///
Message实体对象 ///
public bool Insert(MessageModel mm) { return _sqlMessage.Insert(mm); } }}

  Client

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.Proxy;public partial class Proxy : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {        MessageProxy m = new MessageProxy();        Response.Write(m.Insert(new MessageModel("插入", DateTime.Now)));        Response.Write("
"); Response.Write(m.Get()[0].Message + " " + m.Get()[0].PublishTime.ToString()); }}

  运行结果

  True
  SQL方式获取Message 2007-4-1 16:31:24

转载于:https://www.cnblogs.com/taotaodetuer/p/6182367.html

你可能感兴趣的文章
51nod挑的部分5级题
查看>>
基于matlab的fft变换中参数的设置
查看>>
如何查找JSP页面中的错误
查看>>
2016 年总结
查看>>
Python学习开始
查看>>
VC6.0之Debug调试总结
查看>>
Android应用程序消息处理机制(Looper、Handler)分析(4)
查看>>
C++ 类成员的构造和析构顺序
查看>>
将String转化成Stream,将Stream转换成String
查看>>
POJ-1011 Sticks
查看>>
swat主流域文件(file.cio)参数详解——引自http://blog.sciencenet.cn/blog-922140-710636.html...
查看>>
java路径Java开发中获得非Web项目的当前项目路径
查看>>
Google API设计指南-资源名称
查看>>
最全React技术栈技术资料汇总(收藏)
查看>>
道德迷宫,不该成为无人驾驶发展的拦路虎!
查看>>
阿里AI界的新伙伴,1秒钟自动生成20000条文案
查看>>
bat文件的一些小技巧
查看>>
通过DBCC PAGE查看页信息验证聚集索引和非聚集索引节点信息
查看>>
【工具使用系列】关于 MATLAB 遗传算法与直接搜索工具箱,你需要知道的事
查看>>
flex 学习笔记 stage
查看>>