• 代理模式——HeadFirst设计模式学习笔记


    代理模式:为另一个对象提供一个替身或占位符控制这个对象的访问

    特点:

    • 让代理对象控制对象的访问,被代理对象可以是远程对象(远程代理),创建开销较大对象(虚拟代理),或需要安全控制的对象(保护代理)
    • 为另一个对象提供代表,以便控制客户对对象的访问

    代理分类:

    • 远程代理:好比远程对象(在不同JVM虚拟机的对象)的本地代表(本地方法的行为转移到远程),帮助我们处理网络上的细节
      • 代理假装自己是远程对象,不过只是一个中间角色,处理访问远程对象
      • Java RMI提供了客户辅助对象stub和服务辅助对象skeleton,并为其提供相同的方法

      • 注意方法返回值需要设置为可序列化对象Serializable,不需要序列化的状态变量使用transient声明
      • 注意处理远程访问异常
      • 执行过程:从远程获取代理对象 -》客户调用代理对象的方法 -》调用发送到远程 -》远程接受调用信息并在具体对象上操作 -》获得结果返回给代理 -》代理把结果告诉客户
    • 虚拟代理:作为创建开销大的对象的代表
      • 在大对象创建前和创建中由虚拟对象代替大对象,在创建完毕后将动作委派给大对象
    • 保护代理:通过代理实现不同的用户对对象有不同的访问权限
    • 动态代理:通过反射在运行过程中动态的创建代理,根据传入的接口集创建。Java内置动态代理支持
    • 防火墙代理:控制网络资源的访问,保护主题免于坏客户的侵害
    • 智能引用代理:当主题被引用时,进行额外的动作,例如记录独享被引用的次数
    • 缓存代理:为开销大的运算结果提供暂时存储;允许多个客户共享结果,减少计算或网络延迟
    • 同步代理:多线程下为主题提供安全访问
    • 复杂隐藏代理:用来隐藏一个类的复杂集合的复杂度
    • 写入时复制代理:用来控制对象的复制,延迟对象的复制,知道客户真的需要
  • 相关阅读:
    MYSQL索引
    Objective-C:KVO
    iOS UIKit:viewController之动画(5)
    iOS UIKit:viewController之Segues (4)
    iOS UIKit:viewController之Present (3)
    iOS UIKit:viewController之定义(2)
    iOS UIKit:viewController之层次结构(1)
    iOS UIKit:view
    iOS UIKit:App
    Objective-C:Block
  • 原文地址:https://www.cnblogs.com/HectorHou/p/6014159.html
Copyright © 2020-2023  润新知