您的位置:首页 > 其它

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

2018-06-27 01:47 399 查看

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

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 动态代理

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: