浅谈C#设计模式之代理模式

所属分类: 软件编程 / C#教程 阅读数: 60
收藏 0 赞 0 分享

代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口.根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
    public class Proxy:IAction
    {
        ZQZ zzz = null;
        public Proxy(ZQZ mm)
        {
            zzz = mm;
        }
        public void SendFlower()
        {
            zzz.SendFlower();
        }
        public void SendCake()
        {
            zzz.SendCake();
        }
    }
    public interface IAction
    {
        void SendFlower();
        void SendCake();
    }
    public class ZQZ : IAction
    {
        public string myname { set; get; }
        public void SendFlower()
        {
            Console.WriteLine(myname+"送花");
        }
        public void SendCake()
        {
            Console.WriteLine(myname+"送蛋糕");
        }
    }
}

客户端调用:

复制代码 代码如下:

  ZQZ zzz = new ZQZ();
             zzz.myname = "朱建军";
             Proxy p = new Proxy(zzz);
             p.SendFlower();
             p.SendCake();

代理模式分类:

1. 远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。

例如: webservice 服务

2. 虚拟代理, 是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真是对象。

  浏览器当中是用代理模式来优化下载页面的

3.安全代理

  用来控制真实对象访问时的权限。

4.智能指引

是指调用真实对象时,代理处理另外一些事。

更多精彩内容其他人还在看

C# SendInput 模拟鼠标操作的实现方法

C# SendInput 模拟鼠标操作的实现方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中 paint()与Onpaint()的区别

paint是事件onpaint方法onpaint方法是调用paint事件的,用哪一个,效果是一样,就看那一个方便了内部是这样实现的:
收藏 0 赞 0 分享

c#中GetType()与Typeof()的区别

c#中GetType()与Typeof()的区别,需要的朋友可以参考一下
收藏 0 赞 0 分享

将字符串转换成System.Drawing.Color类型的方法

将字符串转换成System.Drawing.Color类型的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

C# 抓取网页内容的方法

C# 抓取网页内容的方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

基于C#后台调用跨域MVC服务及带Cookie验证的实现

本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下
收藏 0 赞 0 分享

使用C#获取远程图片 Form用户名与密码Authorization认证的实现

本篇文章介绍了,使用C#获取远程图片 Form用户名与密码Authorization认证的实现。需要的朋友参考下
收藏 0 赞 0 分享

Winform跨线程操作的简单方法

线程间操作无效:从不是创建控件“label1”的线程访问它
收藏 0 赞 0 分享

C# WINFORM 强制让窗体获得焦点的方法代码

C# WINFORM 强制让窗体获得焦点的方法代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

C#中方括号[]的语法及作用介绍

C#中方括号[]可用于数组,索引、属性,更重要的是用于外部DLL类库的引用。
收藏 0 赞 0 分享
查看更多