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

作者:hebedich 时间:2023-01-23 14:30:59 

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


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#,设计模式,代理模式
0
投稿

猜你喜欢

  • Android同步屏障机制sync barrier实例应用详解

    2023-04-24 05:27:04
  • Android 通知栏的使用方法

    2022-11-12 20:00:29
  • spring aop之链式调用的实现

    2022-10-30 05:56:50
  • c#数字图像处理的3种方法示例分享

    2021-10-09 09:56:51
  • Java实现人机猜拳小游戏

    2023-10-07 16:11:37
  • 详解Java中的字节码增强技术

    2022-08-20 06:25:12
  • Spring BeanPostProcessor接口使用详解

    2022-12-18 09:19:36
  • C#中datatable序列化与反序列化实例分析

    2021-10-13 10:53:06
  • java数据结构排序算法之树形选择排序详解

    2022-07-22 23:43:17
  • 学习Java九大内置对象

    2023-10-13 01:10:10
  • spring cloud整合ribbon问题及解决方案

    2023-07-25 04:24:49
  • java实现切割wav音频文件的方法详解【附外部jar包下载】

    2021-07-08 22:29:56
  • Qt QTableWidget基本操作及使用

    2022-05-22 23:15:55
  • springboot项目中使用Swagger的简单示例

    2023-01-14 05:18:24
  • 详解SpringCloud mysql实现配置中心

    2023-11-02 05:12:57
  • 浅析Android代码质量管理

    2021-06-18 23:02:03
  • JAVA语言编程格式高级规范

    2021-08-21 01:43:54
  • c#哈希算法的实现方法及思路

    2023-10-22 01:48:08
  • Java线程同步Lock同步锁代码示例

    2023-11-17 13:23:54
  • C语言一级指针二级指针和三级指针区别及使用详解

    2022-10-21 03:29:34
  • asp之家 软件编程 m.aspxhome.com