代理模式总结

代理模式的定义

为其他对象提供一种代理以控制对这个对象的访问

代理模式的使用场景

当无法或不想直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现同一个接口

根据代理类生成的时间不同可以分为静态代理和动态代理两种

静态代理

静态代理中的代理类和委托类会实现同一接口

在程序运行之前,代理类就已经存在了。

  • 1个静态代理 只服务1种类型的目标对象
  • 协调调用者和被调用者,降低了系统的耦合度
  • 代理对象作为客户端和目标对象之间的中介,起到了保护目标对象的作用
  • 在目标对象较多的情况下,若采用静态代理,则会出现 静态代理对象量多、代码量大,从而导致代码复杂的问题

动态代理

动态代理类实现了InvocatuonHandler接口,并通过反射机制动态的生成代理者的对象,具体如下:

Proxy.newProxyInstance(loader, interfaces,invocationHandler)
  • 1.通过为Proxy类指定类加载器对象 和 一组接口,从而创建动态代理类的字节码;再根据类字节码创建动态代理类
  • 2.通过反射机制获取动态代理类的构造函数(参数类型 = 调用处理器接口类型)
  • 3.通过动态代理类的构造函数 创建 代理类实例

在程序运行时,代理类才产生。

  • 只需要1个动态代理类就可以解决创建多个
  • 相比静态代理中 直接调用目标对象方法,动态代理则需要先通过java反射机制 从而 间接调用目标对象方法,所以效率低

参考文献

Java反射
代理模式(静态代理 and 动态代理)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 参考资料:菜鸟教程之设计模式 设计模式概述 设计模式(Design pattern)代表了最佳的实践,通常被有经验...
    Steven1997阅读 1,290评论 1 12
  • 南湖,虽说是人工湖,却也是一泓静水,漫步湖畔,随风而动的湖面,波光粼粼,流水潺潺,舒缓有致,兀自成章,仿佛于心深处...
    古城苍狼阅读 554评论 6 10
  • 控制脾气是本领,这句话说给自己听。因为我就是个脾气暴躁的人,遇事就会被点燃,不过脾气都发给了最亲的人。以前对父母发...
    麦唛果阅读 186评论 0 2
  • “肉丸,撒尿牛丸,蘑菇,鱼豆腐……外加一包重庆火锅料,啊,完美!”苏小晓做了个金星标准动作,引得超市导购员低头掩笑...
    楼兰格格i阅读 284评论 0 2

友情链接更多精彩内容