Java设计模式-代理模式

什么是代理模式?

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

所谓的代理严格来讲就是两个子类共同实现一个接口,其中一个子类负责真实业务实现,另一个辅助完成主类业务逻辑操作。

代理模式

UML图:

源代码:

interface ISubject{//操作主题public void get();//要钱
}
class RealSubject implements ISubject{public void get(){System.out.println("还钱");}
}
class ProxySubject implements Subject{//代理实现private ISubject sub = null;//真正的操作业务//在创建代理类对象的时候必须设置要代理的真实主题public ProxySubject(Subject sub){this.sub=sub;}public void prepare(){System.out.println("准备讨债工具");}public void destroy(){System.out.println("得到了欠债的费用");}public void get(){ //接口子类一定要实现抽象方法this.prepare();//真实操作之前的准备this.sub.get();//调用真实的业务逻辑this.destroy();//操作之后的收尾工作}
}
public class DaiLi{public static void main(String args[]){ISubject sub = new ProxySubject(new RealSubject());//通过代理类对象发出,利用代理类来实现真实的业务sub.get();//讨债的核心操作}
}

运行结果:

总结:

  1. 以后如果是自己编写的接口如果想要取得接口的 实例化对象,第一反应写工厂类
  2. 简单工厂和工厂方法模式的不同在于前者生成产生产品的行为封装在一个方法中,根据参数的类型进行实例化,同时不存在抽象接口。而后者则增加了抽象工厂,通过实现不同的工厂方法来创建不同的产品,一个方法通常对应一个产品,这种方式相较于前者扩展性更高,在需求增加时完全符合开闭原则和依赖倒置原则

应用实例:

1、Windows 里面的快捷方式。

2、猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰本人和孙悟空都实现了这个接口,猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类。

3、买火车票不一定在火车站买,也可以去代售点。

4、一张支票或银行存单是账户中资金的代理。支票在市场交易中用来代替现金,并提供对签发人账号上资金的控制。

5、spring aop。

优点:

职责清晰、高扩展性、智能化

缺点:

  1. 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
  2. 实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

使用场景:

按职责来划分,通常有以下使用场景:

1、远程代理。

2、虚拟代理。

3、Copy-on-Write 代理。

4、保护(Protect or Access)代理。

5、Cache代理。

6、防火墙(Firewall)代理。

7、同步化(Synchronization)代理。

8、智能引用(Smart Reference)代理。

Java设计模式-代理模式相关推荐

  1. java设计模式代理模式_Java中的代理设计模式

    java设计模式代理模式 代理对象或代理对象为另一个对象提供占位符,以控制对该对象的访问. 代理充当原始对象的轻量级版本或简化版本. 它支持与原始对象相同的操作,但可以将那些请求委托给原始对象以实现它 ...

  2. Java设计模式(代理模式-模板方法模式-命令模式)

    Java设计模式Ⅴ 1.代理模式 1.1 代理模式概述 1.2 静态代理 1.2.1 静态代理概述 1.2.2 代码理解 1.3 动态代理之JDK代理 1.3.1 动态代理之JDK代理概述 1.3.2 ...

  3. Java设计模式-代理模式笔记

    代理模式 0 什么是代理模式 理解方式1 理解方式2 1 静态代理 1.1 代码实现 1.2 方法解读 1.3 优缺点 2 动态代理 2.1 具体实现 2.2 方法解读 2.3 注意 3 Cglib代 ...

  4. 通俗易懂说java设计模式-代理模式

    基本概念 代理模式,和我们在生活中所理解的"代理"思想并没有太大的区别.代理模式的实现需要我们设计一个代理类,在不直接访问被代理对象的前提下,通过代理类实现对被代理对象的间接访问, ...

  5. JAVA设计模式--代理模式(静态)

    目录 一.什么是代理模式 二.静态代理模式的结构 三.静态代理模式应用举例 应用一 应用二 四.代理模式的应用场景 五.静态代理模式的特点 一.什么是代理模式 代理(Proxy)模式为其他对象提供一种 ...

  6. Java设计模式—代理模式

    1. 什么是代理模式? 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 2. 代理模式有什么好处? 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标 ...

  7. java设计模式-代理模式初探

    根据圣思园的视频,整理的java代理模式. 代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间 ...

  8. JAVA设计模式 - 代理模式

    在对象的一个业务方法完成之后, 有时候我们可能需要去添加一些新的功能(前置校验等). 但我们又不想更改原来的代码 , 代理模式就为我们提供了一种解决方案 . 1 . 代理模式的定义 代理模式就是在不改 ...

  9. Java设计模式——代理模式

    文章目录 1.简介 2.推荐实现案例 3.优缺点 3.1 优点 3.2 缺点 4.应用场景 5.注意事项 6.拓展 6.1 普通代理 6.2 强制代理 6.3 代理类的个性 6.4 动态代理 7.最佳 ...

  10. Java设计模式--代理模式

    1. 代理模式的引入 王大爷借了小李1.5亿,小赖是个无赖横竖就是不还钱,王大爷身子弱讨不回钱就请了讨债公司的小强,最后小强通过一系列**(过于残暴被打码了)的手段帮助王大爷讨回欠款.完事后还帮王大爷 ...

最新文章

  1. 万豪酒店数据库遭入侵 5亿顾客信息或泄露
  2. HA-heartbeat高可用双击热备安装配置详解
  3. UA PHYS515A 电磁理论V 电磁波与辐射9 简单辐射系统
  4. VMware Data Recovery备份恢复vmware虚拟机
  5. php 动态生成文件,php动态程序生成静态文件示例
  6. 浅尝EffectiveCSharp_1
  7. Flex 学习笔记------FLACC Crossbridge
  8. 女生学计算机未来出路,计算机真的已经烂大街了吗,女生学计算机没出路吗?...
  9. 谷歌将彻底淘汰10年前发布的Android版本
  10. 账户体系、支付服务设计第一版
  11. 不小心把Run Dashboard隐藏了多服务运行操作菜单找不到?springboot多服务快速启动窗口打开,按照这个办法完美解决!
  12. 无人驾驶系统基本框架
  13. Beyond Compare和UltraCompare有什么不一样
  14. 计算机上无线网络开关在哪里,笔记本电脑的无线网络开关在哪里
  15. IBM-P55A小型机内存故障
  16. 激光传感器构建栅格地图
  17. [线性代数]n维向量(秦静老师主讲)
  18. Matplotlib自定义图例(多张独立图共享图例)
  19. 联想G40-30进win10PE触摸板、键盘无反应
  20. UVa 10115 自动编辑

热门文章

  1. 水电远程预付费管理系统
  2. 基于SpringBoot校园疫情防控管理系统 校园出入登记系统
  3. Java后端开发流程
  4. SQL语言入门学习,这一篇就够了
  5. java计算机毕业设计图书馆预约占座系统源码+系统+数据库+lw文档+mybatis+运行部署
  6. 非参数统计的Python实现—— Cox-Staut 趋势存在性检验
  7. java并发编程实践之安全发布和逸出
  8. URLDecoder.decode 过时
  9. VS2017 Community C++模块 离线打包安装
  10. mysql 分割后循环,mysql实现字符串分割SPLIT函数的四种方法