代理模式静态代理

代理模式概括的说”就是一个类控制另一个类具体方法的执行,中间还可以其它操作“。

代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式一般涉及到的角色有:
抽象角色:声明真实对象和代理对象的共同接口;
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。

说的通俗点:

Proxy创建了对象的使用环境,并向客户隐藏了对象与环境之间的交互过程。Proxy的作用就是让你的代码能够去关注真正要解决的问题(核心问题),而 不会被过程中遇到的障碍(环境问题)所迷惑;说白了就是让类方法的使用者(客户)在调用方法时“看起来更自然”,从而能够更加关注要解决的问题。此种典型 的环境问题包括:DB操作、网络I/O、安全控制等,在使用Proxy的情况,“客户”将感觉不到DB或网络的存在,想取数据就取到了。

在通俗点:

如果你知道hibernate,那你可以把整个hibernate看成一个代理
有了它你就不必手写SQL再搞对象映射了,想创建对象new一个就好,想保存save一下就成
这样你就能集中精力搞核心业务的问题了。

     interface Network { // 定义Network接口  
         public void browse(); // 定义浏览的抽象方法  
     }   
      
     class Real implements Network { // 真实的上网操作  
         public void browse() { // 覆写抽象方法  
             System.out.println("上网浏览信息!");   
         }   
     }   
      
     class Proxy implements Network { // 代理上网  
         private Network network;   
      
         public Proxy(Network network) {// 设置代理的真实操作  
             this.network = network; // 设置代理的子类  
         }   
      
        public void check() { // 身份验证操作  
            System.out.println("检查用户是否合法!");   
        }   
      
        public void browse() {   
            this.check(); // 调用具体的代理业务操作  
            this.network.browse(); // 调用真实的上网操作  
        }   
    }   
      
    public class ProxyDemo {   
        public static void main(String args[]) {   
            Network net = null; // 定义接口对象  
            net = new Proxy(new Real()); // 实例化代理,同时传入代理的真实操作  
            net.browse(); // 调用代理的上网操作   
        }   
    }  

动态代理设计模式 http://zliguo.iteye.com/blog/2259201

Q群: 426554356 JAVA大牛交流,HR美女提供好的工作职位,欢迎你的加入

猜你喜欢

转载自zliguo.iteye.com/blog/2227878