Proxy
在面向对象系统中,有些对象由于某种原因(如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问[分布式访问对象,安全访问]等),直接访问会给使用者、或者系统结构带来很多麻烦
① 创建接口
public interface Subject {
void run();
}
② 创建具体实现类
/**
* 实现Subject接口的实体类
*/
public class RealSubject implements Subject{
private String subject;
public RealSubject(String subject) {
this.subject = subject;
}
@Override
public void run() {
System.out.println(subject);
}
}
③ 创建代理类实现Subject
public class ProxySubject implements Subject{
private RealSubject realSubject;
private String subject;
public ProxySubject(String subject){
this.subject = subject;
}
// 让我(代理对象)调用run去帮你调用真正对象的run
@Override
public void run() {
// 对RealSubject的一种间接访问
// 业务和复杂,如远程访问,安全访问等等
// 这里就简单创建
if(realSubject == null){
realSubject = new RealSubject(subject);
}
realSubject.run();
}
}
JDK自带的动态代理
未完。