博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
乐在其中设计模式(C#) - 代理模式(Proxy Pattern)
阅读量:5086 次
发布时间:2019-06-13

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

原文:

乐在其中设计模式(C#) - 代理模式(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
参考
OK
posted on
2014-03-09 18:13 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/3590345.html

你可能感兴趣的文章
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>