静态代理模式
- 要求:有真实角色,代理角色
- 真实角色和代理角色要实现同一个接口
- 代理角色要持有真实角色的引用
设计静态代理模式
(1)必须有一个共同使用的接口
1 // 共同的接口
2 public interface Proxy {
3 public abstract void todo();
4 }
(2)代理角色和真实角色共同实现该接口,代理角色实现需要的功能。
// 真实角色
class RealityRole implements Proxy {
@Override
public void todo() {
System.out.println("真实角色的功能");
}
}
// 代理角色
class ProxyRole implements Proxy {
// 持有代理角色的引用
private Proxy realityRole;
public ProxyRole() {
}
//传入一个真实角色
public ProxyRole(Proxy role) {
realityRole = role;
}
@Override
public void todo() {
//在真实角色功能运行之前,代理角色做准备工作
doBefore();
//执行真实角色的功能
realityRole.todo();
//代理角色的收尾工作
doAfter();
}
private void doBefore() {
System.out.println("准备工作");
}
private void doAfter() {
System.out.println("收尾工作");
}
}
(3)创建真实角色的对象和代理角色的对象,并将真实角色对象的引用传给代理角色,让代理角色去执行功能。
public class Test {
public static void main(String[] args) {
//创建真实角色对象
Proxy realityRole = new RealityRole();
//创建代理角色对象,并制定真实对象
ProxyRole proxyRole = new ProxyRole(realityRole);
//代理角色工作,本质调用的还是真实角色的功能
proxyRole.todo();
}
}
运行结果:
准备工作
真实角色的功能
收尾工作