java设计模式 代理模式

  1,定义:代理模式是通过一个代理或者占位符来控制该对象的访问
    代理模式一般涉及到的角色
  抽象角色:声明真实对象和代理对象的共同接口。
  代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能够代替真实对象。
  同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
  真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
  2,应用场景:
       a,静态代理
       b,动态代理 
       c,远程代理
       d,虚拟代理
       e,安全代理
       f,智能代理
  3,详细介绍
     静态代理:代理所需要的代理角色,在程序编译期就已经生成。
     实例:
    /**
     * 公共接口类代理类和真实类都要实现
     *
     */
    public interface BaseInterface
    {
      
       void doJob();
    }

     /**
      * 真实类,也就是被代理类真正干事的类
     *
     */
   public class Job implements BaseInterface
   {
     public void doJob()
     {
        System.out.println("真正的工作方法");
     }
    }
        /**
         * 代理类调用真实类中的工作类
         *
         */
        public class JobProxy  implements BaseInterface
        {
            public void doJob()
            {
                Job job=new Job();
                job.doJob();
            }
       
        }
    动态代理
    spring中AOP的实现用到了2种动态代理的实现
    Spring提供了两种方式来生成代理对象: JDKProxy和Cglib,具体使用哪种方式生成由AopProxyFactory根据AdvisedSupport对象的配置来决定。默认的策略是如果目标类是接口,则使用JDK动态代理技术,否则使用Cglib来生成代理。下面我们来研究一下Spring如何使用JDK来生成代理对象,具体的生成代码放在JdkDynamicAopProxy这个类中。

猜你喜欢

转载自g596139453.iteye.com/blog/2261636