设计模式——代理模式

初识

代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。

结构

在这里插入图片描述

角色:

  • Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy
  • RealSubject类,定义Proxy所代表的真实实体。
  • Proxy类:保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用哦来替代实体

应用

代理,我们生活中处处都有代理模式,比如早上我不想买早饭,因为买早饭还得早出门几分钟,所以我就让同学帮忙带早饭,就是应用的代理模式。帮忙带早饭的同学相当于代理类,我相当于委托类,买早饭是我俩都可以实现的接口。
在这里插入图片描述
声明接口

interface BuyBreakfast
{
    void BuySandwich();
    void BuyHamburg();
}

被帮助者类,相当于RealSubject类

class Receiver:BuyBreakfast
{
     Person person;
     public Receiver(Person person)
     {
         this.person = person;
     }

     public void BuySandwich()
     {
         Console.WriteLine(person.Name+"买三明治");
         
     }

     public void BuyHamburg()
     {
         Console.WriteLine(person.Name+"买汉堡包");
     }
 }

帮助者类,相当于Proxy类

class Helper:BuyBreakfast
{
    Receiver nikita;

    public Helper(Person person)
    {
        nikita = new Receiver(person);
    }

    public void BuySandwich()
    {
        nikita.BuySandwich(); 
    }

    public void BuyHamburg()
    {
        nikita.BuyHamburg();
    }
}

客户端代码

Person person =new Person();
person.Name = "nikita";

Helper help = new Helper(person);

help.BuyHamburg();
help.BuySandwich();

Console.Read();

优点

  • 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。
  • 代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度。

缺点

  • 由于在客户端和真实对象之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢;
  • 实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值