首页 > 其他分享 >结构性型模式概述01--代理模式

结构性型模式概述01--代理模式

时间:2022-10-28 13:34:25浏览次数:58  
标签:01 JDK 访问 -- 代理 模式 对象 动态


结构性型模式概述:

Java-JDK动态代理 详解(AOP)
动态代理是如何实现的?JDK Proxy 和 CGLib 有什么区别?

文章目录

概述:

  • 结构性模式描述如何将类或对象按某种布局组成更大的结构,
  • 分为: 类结构型模式(采用继承机制来组织接口和类)和对象结构型模式(采用组合或聚合来组织对象),

由于组合关系或聚合关系比继承关系耦合低,满足"合成复用原则",所以对象结构模式比类结构模式具有更大的灵活性.

结构型模式分为以下7种

  1. 代理(Proxy)模式:
    为对象提供一种代理以控制该对象的访问,即客户端通过代理间接地访问该对象,从而限制,增强或修改该对象的一些属性
  2. 适配器(Adapter)模式:
    将一个类的结构转换成客户希望的另外的一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作
  3. 桥接模式(Bridge):
    将抽象与现实分离,是他们可以独立变化,它是用组合关系模式代替继承关系
  4. 装饰模式(Decorator):
    动态地给对象增加一些职责,即增加其额外的功能。
  5. 外观模式(Facade):
    为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。
  6. 享元模式(Flyweight):
    运用共享技术来有效地支持大量细粒度对象的复用。
  7. 组合模式(Composite):
    将对象组合成树状层次结构,使用户对单个对象和组合对象具有一致的访问性。

除了适配器模式:分为结构型模式和对象结构性模式两种,其他的全部数去对象结构模式

代理模式

Java-JDK动态代理 详解(AOP)

定义:

由于默写原有需要给某对象提供一个代理以控制该对象的访问,这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象直接的而中介

优点:

  1. 在客户端与目标对象之间起到一个中介作用和保护目标对象的作用
  2. 代理对象可以扩展目标对象的功能
  3. 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加 程序的可扩展性

缺点:

  • 代理模式会造成系统设计种类的数量增加
  • 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢
  • 增加了系统的复杂性

那么如何解决以上提到的缺点呢?答案是可以使用动态代理方式

代理模式的结构与实现

他通过定义一个继承抽象主题的代理来包含真实主题,从而实现对真实主题的访问,

模式结构

  • 抽象主题类:
    通过接口或抽象类声明真实主题和代理对象实现的业务方法。
  • 真实主题类
    实现了抽象主题中的具体业务,是代理对象所代表的真实对象,是最终要引用的对象。
  • 代理类
    提供了与真实主题相同的接口,其内部含有真实主题的引用,它可以访问控制或扩展真实的主题功能
  • 结构性型模式概述01--代理模式_目标对象

代理模式分为静态代理和动态代理

  • 静态
    由程序员创建代理类或特定工具自动生成源代码再对其编译,在程序运行前代理类的, class文件就已经存在
  • 动态
    在程序运行时,运用反射机制动态创建而成

代理模式的引用场景

当无法或者不想之间引用某个对象或访问某个对象存在困难时,可以通过代理对象来间接访问:一是保护目标对象,二增强目标对象


标签:01,JDK,访问,--,代理,模式,对象,动态
From: https://blog.51cto.com/u_15850876/5804549

相关文章

  • SVN介绍和使用
    @目录SVN的介绍SVN是什么作用安装包下载SVN的使用检出提交显示日志更新patch的使用创建使用SVN的介绍SVN是什么SVN是subversion的缩写,是一个开放源代码的版本控制系统,通......
  • 设计模式00----七大原则
    设计模式只是实现了七大原则的具体方式,套用太多的设计模式只会陷入模式陷阱,最后代码写的凌乱不堪在实际工作中很少会规定必须使用哪种设计模式,这样只会限制别人。不能为了......
  • Collections工具之sort
    作者:david_zhang@sh【转载时请以超链接形式标明文章】http://www.cnblogs.com/david-zhang-index/p/4246887.html当某个List<T>未实现Comparable<T>但又需要根据某个字段......
  • 创建型模式03----建造者模式
    建造者模式(Bulider模式)相关优秀的文章—秒懂设计模式之建造者模式文章目录​​建造者模式(Bulider模式)​​​​模式的定义和特点​​​​建造者定义:​​​​优点​​​......
  • ysoserial commonscollections3 分析
    cc3利用链如下:TrAXFilter(Templatestemplates)TemplatesImpl->newTransformer()TemplatesImpl->getTransletInstance()_class[_transletInde......
  • 【服务器数据恢复】RAID5出现异常后重新上线初始化中止,逻辑卷又被格式化的数据恢复
    服务器数据恢复环境:某医院存储服务器,存储了十几年的CT照片等文件的备份;8块硬盘中的7块硬盘作为数据盘组建RAID5,1块作为热备盘。服务器故障:医院方发现存储服务器中的数据......
  • Kotlin Jetpack 实战 | 03. Kotlin 编程的三重境界
    往期文章​​《KotlinJetpack实战:开篇》​​​​《00.写给Java开发者的Kotlin入坑指南》​​​​《01.从一个膜拜大神的Demo开始》​​​​《02.用Kotlin写Gr......
  • Python 嵌入式打包 (图文)
    Python嵌入式打包过程目录Python嵌入式打包过程下载嵌入式包解压和配置安装pip和其他依赖启动项目python嵌入式打包:将python环境与项目代码打包到同一个文件夹中,在其他......
  • Kotlin Jetpack 实战 | 01. 从一个膜拜大神的 Demo 开始
    简介本文属于​​《KotlinJetpack实战》​​系列文章。这是我用Java写的一个“原始架构”的App,名字叫:​​KotlinJetpackInAction​​​,它的功能只有一个:​​膜拜大神!​......
  • Wireshark的ARP协议
    1.ARP协议概述ARP协议全称为(Address Resolution Protocol)翻译过来就是地址解析协议,是一个通过解析网络层地址来寻找数据链路层地址的网络传输协议,他在IPv4中占着......