代理模式
定义
需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
优点
- 在客户端与目标对象之间起到一个中介作用和保护目标对象的作用
- 可以扩展目标对象的功能
- 将客户端与目标对象分离,在一定程度上降低了系统的耦合度,增加了程序的可扩展性
缺点
- 会造成系统设计中类的数量增加
- 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢
- 增加了系统的复杂度
实现
public class Main {
public static void main(String[] args) {
ProxySubject proxySubject=new ProxySubject();
proxySubject.Show();
}
}
/**
* 抽象
*/
interface Subject{
void Show();
}
/**
* 实现抽象
*/
class RealSubject implements Subject{
@Override
public void Show() {
System.out.println("访问显示实现方法。。。。");
}
}
class ProxySubject implements Subject{
private RealSubject realSubject;
@Override
public void Show() {
if(null == realSubject){
realSubject=new RealSubject();
}
preShow();
realSubject.Show();
postShow();
}
public void preShow(){
System.out.println("显示之前预处理");
}
public void postShow(){
System.out.println("显示后的处理");
}
}