首页 > 其他分享 >代理设计模式还不会?2分钟搞定

代理设计模式还不会?2分钟搞定

时间:2023-02-27 09:25:13浏览次数:39  
标签:搞定 对象 void 代理 classFlower 设计模式 public realLaoWang

概述

代理模式就是给某一个对象提供一个代理,并由代理对象控制对原对象的引用。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。例如电脑桌面的快捷方式就是一个代理对象,快捷方式是它所引用的程序的一个代理

代理模式一般又分为安全代理,虚拟代理 ,远程代理。

类图

需求

老王想邀请马冬梅喝酒,抽烟,穿JK,但老王不善言谈,有点羞涩,只能让其秘书出面邀请,最后他陪马冬梅抽烟,喝酒、穿JK。

使用代理模式的代码

public class ClassFlower
{
    public string  Name { get; set; }
    public ClassFlower(string name)
    {
        Name=name;
    }
}
/// <summary>
/// 不管是代理还是十几人都需要做的共同动作
/// </summary>
public interface ISubject
{
    void GiveSmoking();
    void GiveBeer();
    void GiveJK();
}
/// <summary>
/// 实际人
/// </summary>
public class RealLaoWang : ISubject
{
    private readonly ClassFlower _classFlower;

    public RealLaoWang(ClassFlower classFlower)
    {
        _classFlower = classFlower;
    }
    public void GiveBeer()
    {
        Console.WriteLine($"{_classFlower.Name}:请你喝酒");
    }

    public void GiveJK()
    {
        Console.WriteLine($"{_classFlower.Name}:请你穿JK");
    }

    public void GiveSmoking()
    {
        Console.WriteLine($"{_classFlower.Name}:请你抽烟");
    }
}
/// <summary>
/// 代理人
/// </summary>
public class Proxy : ISubject
{
    private readonly RealLaoWang _realLaoWang;

    public Proxy(RealLaoWang realLaoWang)
    {
        _realLaoWang = realLaoWang;
    }
    public void GiveBeer()
    {
        _realLaoWang.GiveBeer();
    }

    public void GiveJK()
    {
        _realLaoWang.GiveJK();
    }

    public void GiveSmoking()
    {
        _realLaoWang.GiveSmoking();
    }
//C#控制台调用
ClassFlower classFlower = new ClassFlower("马冬梅");
RealLaoWang realLaoWang=new RealLaoWang(classFlower);
// 生成代理对象,传入被代理的对象
Proxy proxy=new Proxy(realLaoWang);
ISubject subject = proxy;
subject.GiveBeer();
subject.GiveJK();
subject.GiveSmoking();  

代理模式的优缺点

优点:

  1. 代理模式能够将调用用于真正被调用的对象隔离,在一定程度上降低了系统的耦合度;
  2. 代理对象在客户端和目标对象之间起到一个中介的作用,这样可以起到对目标对象的保护。代理对象可以在对目标对象发出请求之前进行一个额外的操作,例如权限检查等。

缺点:

  1.  由于在客户端和真实主题之间增加了一个代理对象,所以会造成请求的处理速度变慢。
  2. 实现代理类也需要额外的工作,从而增加了系统的实现复杂度。

总结

到这里,代理模式的介绍就结束了,代理模式就是提供了对目标对象访问的代理,有没有发现、设计模式越往后面学习越简单,当然了,有可能也越学越晕,如果发现比较学习的比较乱、晕,建议前面的文章多看几遍,自己举例实操反复练习巩固下。

标签:搞定,对象,void,代理,classFlower,设计模式,public,realLaoWang
From: https://www.cnblogs.com/mhg215/p/17151404.html

相关文章

  • 03_16_JavaWeb||day19_Filter&Listener||day19_Filter&代理模式(23种设计模式之一:用来
    今日内容*Servlet,Filter,Listener被称为JavaWeb三大组件1.Filter:过滤器2.Listener:监听器1.Filter:过滤器概念:生活中的过滤器:净水器,空气净化器,土匪、web中的过滤器:当......
  • 谷粒商城Nginx代理网关
    首先需要在C:\Windows\System32\drivers\etc中的host文件下加入192.168.56.10gulimall.com//192.168.56.10虚拟机的ip地址 本机浏览器请求gulimall.com,通过配置hosts文件......
  • mitmproxy代理抓包、拦截信息
    1、代理安装配置:1.1、方式一:客户端地址:https://mitmproxy.org/downloads/1.2、方式二:Python库pipinstallmitmproxy2、证书安装安装成功后进入C:\Users\admin\.......
  • 简单熟悉下设计模式
    寻找到底用的什么设计模式目录寻找到底用的什么设计模式11.背景11.1.海超写的es,在枚举里面完成了各个方法的调用.感觉很厉害看下12.先熟悉下23中设计模式1......
  • nginx代理mysql
    [[email protected]]#catmysql.confupstreammysql{server192.168.2.6:3306;}server{listen8083;proxy_passmysql;}[roo......
  • 设计模式之装饰器模式
    设计模式之装饰器模式1.解释装饰器模式(DecoratorPattern)也称为包装模式(WrapperPattern)是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的......
  • 设计模式之适配器模式
    简介当我们需要使用某个对象的功能,但是我们没有这个对象时,我们可以用适配器和替换对象来实现这个功能.比如我们手机有typec接口,但是我们没有这个接口的耳机,我们可以......
  • spider_ip代理 - 验证
    title:spider_ip代理-验证author:杨晓东&敖昀阳permalink:spider_ip代理-验证date:2021-10-0211:27:04categories:-投篮tags:-demospider_ip代理-验......
  • Quartz与SpringBoot 搞定任务调度
    一、Quartz简介Quartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百......
  • 设计模式之代理模式
    简介在某些场景下,我们需要增强某个对象的使用,比如我们在执行某个方法前加输出一条日志,但是我们不能直接改这个类,我们可以用代理对象来实现这个功能模式应用Spri......