概述
代理模式,為其他對象提供了一種代理以控制對這個對象的訪問。代理模式給某一個對象提供一個代理對象,並由代理對象控制對原對象的引用。通俗的來講代理模式就是我們生活中常見的中介。
代理模式
UML圖
代碼
代理類和真實類的公用接口
public interface Subject {
void request();
}
真實類的請求
public class RealSubject implements Subject{
@Override
public void request() {
System.out.println("真實請求");
}
}
代理請求,引入了真實類對象,對方法進行了增強
public class Proxy implements Subject{
private RealSubject realSubject;
@Override
public void request() {
if (realSubject == null) {
realSubject = new RealSubject();
}
realSubject.request();
System.out.println("代理請求");
}
}
主函數測試
public class JavaDemo {
public static void main(String[] args){
Subject proxy = new Proxy();
proxy.request();
}
}
應用場景
比如當我們使用別人的代碼的時候,可以通過代理,對方法增強,避免了修改別人的代碼。Spring AOP。
優缺點
職責清晰了,高擴展性,智能化。但由於多了一個代理對象,可能會使請求的處理速度變慢,有些代理的實現較為復雜。