当前位置:首页 > CN2资讯 > 正文内容

(5.1)代理模式之静态代理静态代理和动态代理

2天前CN2资讯

一、模式的使用场景

就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

二、 主要作用

通过引入代理对象的方式来间接访问目标对象

三、解决的问题

防止直接访问目标对象给系统带来的不必要复杂性。

四、代理模式包含的角色

  • Subject:抽象主题角色。可以是接口,也可以是抽象类。
  • RealSubject:真实主题角色。业务逻辑的具体执行者。
  • ProxySubject:代理主题角色。内部含有RealSubject的引用,负责对真实角色的调用,并在真实主题角色处理前后做预处理和善后工作。

五、模型原理

六、代码

代购(代理对象) 代替 我(真实对象) 去买Mac(间接访问的操作)

步骤1: 创建抽象对象接口(Subject):声明你(真实对象)需要让代购(代理对象)帮忙做的事(买Mac)

public interface Subject { public void buyMac(); }

步骤2: 创建真实对象类(RealSubject),即”我“

public class RealSubject implement Subject{ @Override public void buyMac() { System.out.println(”买一台Mac“); } }

 步骤3: 创建代理对象类(Proxy),即”代购“,并通过代理类创建真实对象实例并访问其方法

public class Proxy implements Subject{ //引用并创建真实对象实例,即”我“ RealSubject realSubject = new RealSubject(); @Override public void buyMac{ //调用真实对象的方法,进行代理购买Mac realSubject.buyMac(); //代理对象额外做的操作 this.WrapMac(); } public void WrapMac(){ System.out.println(”用盒子包装好Mac“); } }

步骤4: 客户端调用

public class ProxyPattern { public static void main(String[] args){ Subject proxy = new Proxy(); proxy.buyMac(); } }

七、代理模式优点、缺点:

优点:

  • 职责清晰 真实角色只需关注业务逻辑的实现,非业务逻辑部分,后期通过代理类完成即可。
  • 高扩展性 不管真实角色如何变化,由于接口是固定的,代理类无需做任何改动。

缺点:

  • 1)代理类和委托类实现了相同的接口,代理类通过委托类实现了相同的方法。这样就出现了大量的代码重复。如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

    2)代理对象只服务于一种类型的对象,如果要服务多类型的对象。势必要为每一种对象都进行代理,静态代理在程序规模稍大时就无法胜任了

    举例说明:代理可以对实现类进行统一的管理,如在调用具体实现类之前,需要打印日志等信息,这样我们只需要添加一个代理类,在代理类中添加打印日志的功能,然后调用实现类,这样就避免了修改具体实现类。满足我们所说的开闭原则。但是如果想让每个实现类都添加打印日志的功能的话,就需要添加多个代理类,以及代理类中各个方法都需要添加打印日志功能(如上的代理方法中删除,修改,以及查询都需要添加上打印日志的功能)
    即静态代理类只能为特定的接口(Service)服务。如想要为多个接口服务则需要建立很多个代理类。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/23984.html

    分享给朋友:

    “(5.1)代理模式之静态代理静态代理和动态代理” 的相关文章

    CN2到底是什么?如何计算它?

    在全球互联网通信中,CN2(ChinaNetNextGeneration)是一个众所周知的名字。它是中国电信推出的高端IP虚拟专网(VPN)业务,主要服务于对网络质量要求较高的用户,如跨国企业、金融公司以及需要稳定、高速国际访问的个人用户。CN2的出现,为中国用户提供了更高质量的国际互联网连接,同时...

    选择日本VPS的优势与支持比特币支付的推荐服务商

    当谈到日本VPS时,我总是能想到它在全球互联网环境中的独特地位。日本因其低延迟、高稳定性以及优秀的网络连接,成为了许多希望扩大市场的企业和开发者的首选。特别是面向中国、韩国以及东南亚用户,选择日本VPS可以显著提升服务响应速度,让用户体验更为流畅。 日本的数据中心设施相当先进。这里的技术架构可以说是...

    选择最佳Gigabit VPS托管服务指南

    当我第一次听说Gigabit VPS时,我很快意识到它不仅是一个技术术语,而是一个可以极大改进在线业务性能的工具。那么,Gigabit VPS究竟是什么呢?简而言之,Gigabit VPS意指那些配备每秒10千兆位网络连接的虚拟专用服务器。这种高带宽的连接速度,显然适合那些需要流畅流媒体、快速文件传...

    解决BestTrace中的timestamp is error问题及优化网络性能指南

    BestTrace是一款强大的网络诊断工具,广泛用于追踪数据包从源头到目标的网络路径。它的工作原理结合了traceroute和ping的功能,让用户不仅能够查看每一跳的延迟,还能监测到丢包情况。这意味着,你在使用BestTrace时,能够获得关于网络连接质量的详细信息,及时发现潜在的问题。 在我实际...

    水牛VPS:高性能虚拟专用服务器的最佳选择与比较

    水牛城VPS,顾名思义,是在美国纽约州布法罗市托管的虚拟专用服务器。这种服务器因其独特的地理位置和优越的技术配置,吸引了众多用户,特别是需要高性能和灵活性的网站和应用程序。这类服务的定义非常简单,但其特点却非常丰富。通常来说,水牛城VPS提供了良好的网络带宽、灵活的存储选项,以及能够根据用户需求进行...

    优化RackNerd DC2机房 IP使用体验与性能评测

    我最近对RackNerd的DC2机房产生了越来越多的兴趣,特别是位于美国洛杉矶的这座机房。它被誉为RackNerd中中国国内访问速度较快的机房之一,吸引了很多需求高效网络连接的用户。这座机房的地理位置确实蛮不错,靠近美西主干线,对于需要与国内建立连接的网站和应用来说,能带来相对更快的访问速度。 对于...