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完成业务之前或之后做一些操作。比如业务的预处理和后期处理等。

  • 相关阅读:
    html中的a标签
    dl,dt,dd标签的使用
    MySQL innodb中各种SQL语句加锁分析
    Js字符串与十六进制的相互转换 【转】
    亿级Web系统搭建:单机到分布式集群【转】
    pm2 设置开机启动
    spring cloud 项目相关集成简介
    spring boot下JedisCluster方式连接Redis集群的配置
    并发编程 – Concurrent 用户指南--转
    JDBC 事务和 JTA 事务
  • 原文地址:https://www.cnblogs.com/codeMedita/p/7373846.html
Copyright © 2011-2022 走看看