欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

设计模式----代理模式通俗实例

程序员文章站 2022-06-24 12:57:38
代理和被代理实现同一个接口 代理者女孩的母亲 被代理者女孩 测试 测试结果 附: Spring里代理模式,Spring AOP 利用了 AspectJ AOP实现的! AspectJ AOP 的底层用了动态代理动态代理有两种目标方法有接口时候自动选用 JDK 动态代理目标方法没有接口时候选择 CGL ......

代理和被代理实现同一个接口

package com.ij34.proxy;

public interface ProxyPattern {
  /*
    代理和被代理的共同点就是要实现同一个接口
    */
    public void eat();
    public void  sleep();
}

 

代理者女孩的母亲

package com.ij34.proxy;
   /*
    代理类
*/
public class GrilsMother  implements  ProxyPattern{

    private ProxyPattern pp;

    public  GrilsMother(ProxyPattern pp){
        this.pp=pp;
    }

    @Override
    public void eat() {
       pp.eat();
    }

    @Override
    public void sleep() {
       pp.sleep();
    }
}

 

被代理者女孩

package com.ij34.proxy;
 /*
   被代理类
*/
public class Gril implements ProxyPattern{
     @Override
     public void eat() {
         System.out.println("我是girl,我在eat");
     }

     @Override
     public void sleep() {
         System.out.println("我是girl,我在sleep");
     }
 }

 

测试

package com.ij34.proxy;

   /*
      测试代理,表面上写女孩女孩母亲吃饭睡觉,实际上写女孩吃饭睡觉
*/
public class ProxyTest {
    public static void main(String[] args) {
        GrilsMother dm = new GrilsMother(new Gril());
        dm.eat();
        dm.sleep();
    }
}

 

测试结果

设计模式----代理模式通俗实例

 


 

附:

Spring里代理模式,Spring AOP 利用了 AspectJ AOP实现的! AspectJ AOP 的底层用了动态代理
动态代理有两种
目标方法有接口时候自动选用 JDK 动态代理
目标方法没有接口时候选择 CGLib 动态代理