• 代理模式(静态代理)


    代理模式能将代理对象与真实被调用的目标对象分离

    一定程度上降低了系统的耦合度,扩展性好

    保护目标对象

    增加目标对象

    代理模式的缺点:

    代理模式会造成 系统设计中类的数目增加

    开客户端和目标对象增加一个代理对象,会造成请求处理速度会变慢

     

    代理模式的种类:

    1. 静态代理
    2. 动态代理(jdk只能代理接口)
    3. CGLIB代理(不要使用 final)

     

    Spring 的代理是 ,当Bean有实现接口时,Spring 使用 jdk的动态代理

    当bean没有实现接口时,spring 使用 cglib

    可以强制使用 cglib

    <aop:aspectj-autoproxy proxy-target-class="true"/>

     

    jdk 的动态代理速度会 比 cglib速度要快

    和动态代理有点相似的设计模式: 装饰者模式、适配器模式

    装饰者主要体现在给对象添加行为

    而 代理主要是体现在控制 访问,通过设置代理源 加强目标对象

    适配器模式: 考虑对象和改变对象的接口

     

    使用Proxy角色,使得耗时处理(生成实例)推迟。
    在大型系统的初始化过程中,存在大量耗时处理,如果初始化暂时不会使用的功能,会使启动时间延长,所以使用代理模式,先初始化需要使用的功能

    当遇到代理人不会解决的问题时,还是会"转交"给本人——"委托"(现实世界中是本人委托给代理人,在设计模式中却相反)

    https://www.cnblogs.com/ealenxie/p/9896269.html

    静态代理和 装饰器模式真的很像

    但是他们的侧重点又不一样,所以设计模式本身就是一种思想表达的形式

    因为看问题的角度不同,那么对这个问题的解释也不一样

    所以设计模式很多时候是有交叉甚至重合的

    也许我只是为了达到某种目的而采用一种设计模式,但是可能不知不觉就加进来其他的设计模式

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Django框架学习-Model进阶用法
    jquery获取元素的所有宽高(包括内边距和外边距)
    django group_by
    jquery如何判断滚动条滚到页面底部并执行事件
    web ajax跨域问题解决方案
    django ckeditor的使用方法
    django自带User管理中添加自己的字段方法
    如何在django中使用多个数据库
    使用django-mssql时候报pythoncom模块不存在
    centos命令行常用操作
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/12570263.html
Copyright © 2020-2023  润新知