核心思想
JAVA代理模式(一)
A. 实现同一个接口,所以代理类和被代理类有相同的对外接口;
B. 在程序运行前,静态代理类的.class文件就已经存在了。
实现步骤
1.定义一个接口;
2.定义一个该接口的真实实现类;
3.定义一个该接口的代理实现类。
示例代码
1.定义一个接口TheUser.java
package com.rocky.learn.l003.t2;
public interface TheUser {
public abstract String say();
}
2.定义一个该接口的真实实现类 TheUserImpl.java
package com.rocky.learn.l003.t2;
public class TheUserImpl implements TheUser {
@Override
public String say() {
return "Hello world, And I'm testing the DYNAMIC-PROXY.";
}
}
3.定义一个该接口的代理实现类TheProxyUserImpl.java
package com.rocky.learn.l003.t2;
public class TheProxyUserImpl implements TheUser {
private TheUser user;
public TheProxyUserImpl(TheUser user){
this.user = user;
}
@Override
public String say() {
System.out.println(">BEFORE");
String result = user.say();
System.out.println(result);
System.out.println(">END.");
return result;
}
}
如何调用
package com.rocky.learn.l003.t2;
public class Test {
public static void main(String[] args) {
TheProxyUserImpl proxy = new TheProxyUserImpl(new TheUserImpl());
proxy.say();
}
}