代理模式(Proxy Pattern)

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

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

  MessageModel

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

  IMessage

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

  SqlMessage

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

  MessageProxy

using System;
using System.Collections.Generic;
using System.Text;namespace Pattern.Proxy
{/// <summary>/// 代理类/// </summary>public class MessageProxy : IMessage{SqlMessage _sqlMessage;/// <summary>/// 构造函数/// </summary>public MessageProxy(){_sqlMessage = new SqlMessage();}/// <summary>/// 获取Message/// </summary>/// <returns></returns>public List<MessageModel> Get(){return _sqlMessage.Get();}/// <summary>/// 插入Message/// </summary>/// <param name="mm">Message实体对象</param>/// <returns></returns>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("<br />");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

二十四种设计模式:代理模式(Proxy Pattern)相关推荐

  1. 二十四种设计模式:装饰模式(Decorator Pattern)

    装饰模式(Decorator Pattern) 介绍 动态地给一个对象添加一些额外的职责.就扩展功能而言,它比生成子类方式更为灵活. 示例 有一个Message实体类,某个对象对它的操作有Insert ...

  2. 设计模式-代理模式(Proxy Pattern)

    设计模式-代理模式(Proxy Pattern) 文章目录 设计模式-代理模式(Proxy Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.小结 六.动态代理 ...

  3. 设计模式——代理模式(Proxy Pattern)之为别人做嫁衣

    代理模式Proxy Pattern 代理模式 1.背景 2.定义 3.特征 4.应用场景 5.实验案例 参考 代理模式 1.背景 假如说我现在想租一间房子,虽然我可以自己去找房源,做卫生检测等一系列的 ...

  4. 二十四种设计模式之代理模式

    一.什么是代理模式? 简单来说,代理模式就相当于我们生活中的中介,比如我们租房子通过房产中介或者是租房的app,买电影票通过app,就是我们实现事情的一个媒介. 二.代理模式实例 1.就比如说,程序员 ...

  5. 二十四种设计模式:策略模式(Strategy Pattern)

    策略模式(Strategy Pattern) 介绍 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法的变化可独立于使用它的客户. 示例 有一个Message实体类,对它的操 ...

  6. 二十四种设计模式:备忘录模式(Memento Pattern)

    备忘录模式(Memento Pattern) 介绍 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到保存的状态. 示例 有一个Message实体类 ...

  7. 二十四种设计模式:访问者模式(Visitor Pattern)

    访问者模式(Visitor Pattern) 介绍 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 示例 有一个Message实体类,某些对 ...

  8. 二十四种设计模式之策略模式

    一.什么是策略模式? 简单来说,策略模式是将每一个算法封装到拥有共同接口的不同类中,使得算法可以在不影响客户端的情况下发生变化.(也可以理解为可供程序运行时选择的(不同的类==不同的解决方案)). 策 ...

  9. 二十四种设计模式:责任链模式(Chain of Responsibility Pattern)

    责任链模式(Chain of Responsibility Pattern) 介绍 为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求.将这些对象连成一条链,并沿着这条链传递该请求, ...

最新文章

  1. 选择问题 and 字谜游戏问题
  2. winform groupbox控件放到窗体中间位置
  3. java挖矿算法_Scrypt 不止是加密算法,也是莱特币的挖矿算法
  4. 怎样选择合适的PoE交换机?POE交换机选用小常识!
  5. ArrayList理解(5)与vector区别
  6. iOS 10 不提示「是否允许应用访问数据」,导致应用无法使用的解决方案
  7. 数据仓库和数据库有什么区别
  8. 提取已有的内核配置文件
  9. CAN通讯进阶-基于Python使用dbc文件解析CAN数据(dbc文件的创建、使用方法)
  10. linux命令mysql启动,linux下启动mysql的命令
  11. [索尼]笔记本电脑驱动程序安装顺序?
  12. 并联串联混合的电压和电流_初中物理归纳并联和串联的区别
  13. vue 调微信jsapi
  14. 从微博数据看国产手机格局 新四大取代中华酷联
  15. Linux下用imageMagick对图片进行一些操作,非常建议方便的一个图片处理工具。
  16. 微信小程序 自定义标题栏
  17. 微软梁念坚谈新平台 企业跨界办公随需而变
  18. 人工智能数学基础--微分:定义、运算以及应用
  19. 震坤行工业超市研发效能提升之路 | 云效
  20. php中md5加密函数怎么用,用PHP写的MD5加密函数

热门文章

  1. 在android中监听呼出电话(电话拦截、修改呼出电话)
  2. postgreSQL入门01-安装
  3. exchange2010使用通配符造成的不停的需要输入密码却访问不了
  4. python3学习笔记10(迭代器和生成器)
  5. selenium之输出html测试报告
  6. android 开发环境 配置和说明
  7. Navicate Premium连接Oracle数据库报错
  8. Highcharts 配置语法;Highcharts 配置选项详细说明
  9. Linux shell程序一
  10. 存储过程传入参数与表字段名相同时产生的问题