zoukankan      html  css  js  c++  java
  • Java的设计模式(三)

    代理模式

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

      何为提供一个替身或占位符?即一个对象代表另一个对象。有什么事直接告诉代理对象,不必麻烦真正的对象,由代理对象来决定哪些事情去交给真正的对象。举个例子,以前男女婚配,由男方家庭去拜托媒人,媒人转告女方,此时媒人就是代理对象,真正对象时女方。媒人此时就控制了对真正对象的访问。代理模式有许多变体,这些变体都与“控制访问”的做法有关。如

    • 远程代理控制访问远程对象。
    • 虚拟代理控制访问创建开销大的资源。
    • 保护代理基于权限控制对资源的访问。

      代理模式类图

    远程代理

      

      远程代理适用于需要与远程端,即不在同一个jvm环境下的对象交互。要实现远程代理,步骤有点复杂。

      

    其中,jdk5以后是可以跳过步骤三的,步骤三的功能已经交给动态代理去实现。其中,远程类的实现结构

    注册相关代码与启动注册

     客户端连接的相关代码

     虚拟代理

      书中举例创建一个cd封面,封面图片由下载网络上的图片得来,此封面创建过程开销非常大,于是采用代理模式让代理展示出“正在加载”这句话,等真正创建好图片对象的时候,再显示出图片。代理对象拥有被代理的对象的引用。

    保护代理(动态代理)

      保护代理可以用来对被代理对象划分权限,决定被代理对象有哪些方法可以调用,哪些不可以。

      类图如下

      其中,proxy是jdk给的,我们添加的代码只能在InvocationHandler中。你划分了多少种不同的权限,就需要创建多少种InvocationHandler。实现保护代理需要经过以下几个步骤

    1. 创建InvocationHandler。决定权限的关键代码

    2. 创建Proxy类并实例化Proxy对象
  • 相关阅读:
    执行一个外部程序并等待他的结束
    打开WORD文档时提示“word无法启动转换器mswrd632 wpc”的解决方法
    WaitForSingleObject的用法
    Delphi CreateProcess WIN32API函数CreateProcess用来创建一个新的进程和它的主线程,这个新进程运行指定的可执行文件
    webservices传base64字串
    webservices传文件
    webservices 字节数组 Base64编码
    内存映射大文件
    文件分割合并
    move
  • 原文地址:https://www.cnblogs.com/one-code/p/9822647.html
Copyright © 2011-2022 走看看