zoukankan      html  css  js  c++  java
  • 结构型模式之代理

    希望赶快把常用的设计模式总结一下.....

    代理模式(Proxy)是对象的结构模式,GOF著作作为经典之作,这里还是引用它的描述:为其他对象提供一种代理以控制对这个对象的访问。《Java与模式》一书讲得通俗易懂一些,也即是:代理模式给某一对象提供一个代理对象,并由代理对象控制对原对象的引用。所谓代理,就是一个人或一个机构代表另一个人或另一个机构采取行动。代理对象可以在客户端与目标对象之间起到中介的作用。以下是GFO给出的代理模式结构:

    通过给定的结构图,设计出以下代码:

     1 abstract class Subject{
     2     abstract public void Request();
     3 }
     4 class RealSubject extends Subject{
     5     public void Request(){
     6         System.out.println("this is RealSubject::Request()");
     7     }
     8 }
     9 class Proxy extends Subject{
    10     private RealSubject realSubject;    
    11     public void Request(){
    12         preRequest();
    13         if(realSubject==null){
    14             realSubject=new RealSubject();
    15         }
    16         realSubject.Request();
    17         postRequest();
    18     }
    19     private void preRequest(){
    20         System.out.println("this is Proxy::preRequest()");
    21     }
    22     private void postRequest(){
    23         System.out.println("this is Proxy::postRequest()");
    24     }
    25 }
    26     
    27 public class Test{
    28     public static void main(String[] args) {
    29         Subject sub=new Proxy();
    30         sub.Request();
    31     }
    32 }
    View Code

    这里,我们创建一个代理对象sub,当用户请求代理对象sub处理一些业务是,代理对象sub实际上是将业务传递给一个原本就是对该业务进行管理的对象(我们定义为RealSubject类),而用户并不知道RealSubject的存在,代理类还可以在RealSubject完成业务之前或之后做一些操作。比如业务的预处理和后期处理等。

  • 相关阅读:
    天下无贼的IT版经典台词(zz)
    matlab混合编程向导(vc,vb,.net...)
    mcc生成的代码加入VC,VC的一些设置
    请问:Win2k下面,怎样取消mediaplayer的预览?
    win2k密码恢复
    **上海铁路局2004年最新时刻发布!**
    VC与Matlab混合编程的快速实现(31)
    校车时刻表
    悼Java师兄(转载)
    制作弹出窗口常用技巧九则
  • 原文地址:https://www.cnblogs.com/codeMedita/p/7373846.html
Copyright © 2011-2022 走看看