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

【Java】——代理模式java代理模式的典型例子

1天前CN2资讯


前提

    不知道大家是否看过《大话设计模式》,其中大话设计模式中讲代理模式的故事感觉还是很搞笑的,自己想追求女朋友,但却请朋友代劳,结果变成了朋友和期待的女朋友在一起。唉,这还是说明有些事情还是需要自己勇敢出击才能得到,否则是人财两空啊。其实小故事中却讲述了一个代理模式的机制。


何为代理模式?


    所谓的代理模式就是在原有服务上多加一个占位,通过占位去控制服务的访问。通过为其他对象提供一种代理以控制对这个对象的访问。



例子


    假如是自己是一位工程师,提供技术帮助,公司有一位客服,不懂技术,此时有一位用户,需要公司提供技术服务,此时用户只能联系客服沟通,而不是直接找工程师,再由客服根据公司的规章制度和业务规则和业务规则决定是否来找工程师服务。此时客服就是一个代理,客户只能通过客服代理访问工程师。站在用户的角度,只需要认识客服就行了。站在工程师的角度,只需认为客服代表公司,不用管工程师是如何为用户服务的。



调用机制

    用图形来代表代理模式

    


   


调用方式UML图

         

代码实践


public interface Subject {
void Request();
}
//真实对象
public class RealSubject implements Subject {
@Override
public void Request() {
System.out.println("我是真实的对象");
}
}
//代理对象
public class Proxy implements Subject {
@Override
public void Request() {
System.out.println("##########################");
System.out.println("我是代理对象,关联真实对象");
RealSubject realSubject = new RealSubject();
System.out.println("调用真实对象的方法");
System.out.println("###################################");
realSubject.Request();
}
}
//调用
public class client {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.Request();
}
}

       



为什么要用代理模式?


1、通过代理模式可以控制如何访问真正的服务对象提供额外的服务。

2、可以通过重写一些类满足特定的需要



代理模式应用场景


1、远程代理,为一个对象在不同的地址空间提供局部代表,隐藏一个对象存在于不同地址空间的事实

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

3、安全代理,用于控制真实对象访问时的权限

4、智能指引,调用真实对象时,代理处理另外一些事

【总结】

    代理模式是很常用的一种设计,也是反射机制实现的原理。而且在需要优秀的框架中均有。目前常用两种动态代理方式,一是JDK中通过反射机制实现,二是开源框架CGLIB实现动态代理。后续的博客会详细说明上述两种动态代理实现方式。

    文章纯属个人认知,如有理解偏颇之处,还请各位大神赐教,不胜感激!

    你可能想看:

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

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

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

    分享给朋友:

    “【Java】——代理模式java代理模式的典型例子” 的相关文章

    黑色星期五 2019:市场表现与购物策略揭秘

    黑色星期五的概述 黑色星期五,这个听起来颇具神秘色彩的词汇,实际上是指每年感恩节后的第一天,标志着圣诞购物季的开始。在美国,黑色星期五吸引了成千上万的消费者,商店为了吸引顾客纷纷推出大幅折扣和促销活动。尽管它最初起源于美国,但随着时间的推移,这一购物狂潮逐渐扩展到全球,其背后的商业魅力覆盖了多个国家...

    RackNerd VPS服务测评:性价比高、稳定性强的主机商推荐

    在当今的网络世界中,选择合适的主机商显得尤为重要。我最近体验了RackNerd这家提供VPS服务的主机商,想和大家分享一些我的观点。RackNerd因其性价比高而广受好评,这让我在决定购买前进行了详细的测评。我会从多个角度来探讨RackNerd的各方面表现。 RackNerd不仅在价格上拥有明显优势...

    香港VPS推荐:选择适合您的虚拟服务器的最佳指南

    在如今的互联网时代,香港VPS逐渐成为了个人和企业的热门选择。香港VPS,简单来说,是一种虚拟专用服务器,位于香港的数据中心。它为用户提供云计算的强大能力,不论是网站托管、应用开发,还是数据存储,都能灵活应对需求。对于希望在亚太地区拓展业务的用户来说,这无疑是一个理想的解决方案。 香港VPS的多样化...

    Atlantic VPS:高性能、灵活性与安全性的理想选择

    什么是Atlantic VPS? Atlantic VPS由Atlantic.net提供,这是一家在VPS托管服务领域中的资深者,已经经营了近29年。创建之初,Atlantic.net就定位于高性能和灵活性,以满足企业和开发者日益增长的需求。他们的目标是提供一种可靠的解决方案,让用户在自己的业务上更...

    宝塔安装全攻略:轻松管理你的服务器与网站

    宝塔面板,凭借其简单易用的特性,已经成为很多用户搭建和管理网站的首选工具。作为一款开源的服务器管理软件,宝塔面板提供了丰富的功能和灵活的操作方式,让无论是新手还是经验丰富的用户都能轻松上手。我在使用宝塔面板的过程中,深刻体会到它带来的便利和高效。 功能与特点 宝塔面板最大的一大优势在于其直观的用户界...

    如何安全地关闭防火墙和使用Linux命令管理防火墙

    在使用Linux系统时,关闭防火墙这件事我总觉得是个敏感话题。防火墙是保护计算机免受外部攻击的重要屏障,理解其作用很有必要。防火墙可以帮助我们监控和限制进入或离开系统的网络流量,让未授权的访问无处遁形。因此,在我们决定关闭防火墙之前,首先要明确什么样的场景和条件下,这个操作是合理的。 关闭防火墙之前...