zoukankan      html  css  js  c++  java
  • 设计模式12: Proxy 代理模式(结构型模式)

    Proxy 代理模式(结构型模式)

    直接与间接

    人们对于复杂的软件系统常常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活、满足特定需求的解决方案。如下图,开始时,A需要和B进行3次通信,当增加一个C后,C和B只需要通信一次,A和C通信3次就好了。

    动机(Motivation)

    在面向对象系统中某些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全机制,或者需要进程外的访问等),直接访问会给使用者、或者系统结构带来很多麻烦。

    如果在不失去透明操作对象的同时来管理、控制这些对象特有的复杂性?增加一层简洁层是软件开发中常见的解决方式。

    结构(Structure)

    适用性
    在需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。下面是一些可以使用Proxy模式常见情况:
    1)远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表。
    2)虚代理(Virtual Proxy)根据需要创建开销很大的对象。
    3)保护代理(Protection Proxy)控制对原始对象的访问。保护代理用于对象应该有不同的访问权限的时候。
    4)智能指引(Smart Reference)取代了简单的指针,它在访问对象时执行一些附加操作。

    Proxy模式的几个要点

    “增加一层间接层”是软件系统中对许多复杂问题的一种常见解决方法。在面向对象系统中,直接使用某些对象会带来很多问题,作为简洁层的proxy对象便是解决这一问题的常用手段。

    具体Proxy设计模式的实现方法、实现粒度都相差很大,有些可能对单个对象做细粒度的控制,如copy-on-write技术,有些可能对组件模块提供抽象代理层,在架构层次对对象做proxy。

    Proxy并不一定要求接口的一致性,只要能够实现间接控制,有时损及一些透明性是可以接受的。

    转载请注明出处:

    作者:JesseLZJ
    出处:http://jesselzj.cnblogs.com

  • 相关阅读:
    修复PLSQL Developer 与 Office 2010的集成导出Excel 功能
    Using svn in CLI with Batch
    mysql 备份数据库 mysqldump
    Red Hat 5.8 CentOS 6.5 共用 输入法
    HP 4411s Install Red Hat Enterprise Linux 5.8) Wireless Driver
    变更RHEL(Red Hat Enterprise Linux 5.8)更新源使之自动更新
    RedHat 5.6 问题简记
    Weblogic 9.2和10.3 改密码 一站完成
    ExtJS Tab里放Grid高度自适应问题,官方Perfect方案。
    文件和目录之utime函数
  • 原文地址:https://www.cnblogs.com/jesselzj/p/4770143.html
Copyright © 2011-2022 走看看