##靜態代理模式
目的:爲其他對象提供一種方式來控制對這個對象的訪問,該方式即爲代理模式。
一個代理模式通常包括以下幾個部分:
–抽象⻆色:聲明真實對象和代理理對象的共同接口。
–代理角色:內部含有對真實對象的引⽤,相當於對真實對象進行行封裝。
—真實角色:是我們最終要引⽤用的對象。
三者之間的關係我們可以使用一句話來描述:
真實對象需要完成某件事,但是自己不想太麻煩(房東出租房子),於是找來了代理角色(房屋出租的中介),說你替我完成租房的事吧!(出租方法,在抽象角色中定義的)。
//抽象角色,代理角色和真實角色都要實現
public abstract class AbstractSubject {
public abstract void doSomeThing();
}
//真實角色,即被代理的類
public class RealSubject extends AbstractSubject {
@Override
public void doSomeThing() {
System.out.println("do some thing!");
}
}
//代理對象,代理真實角色 完成指定功能
public class ProxySubject extends AbstractSubject {
//持有真實對象的應用
private RealSubject realSubject;
@Override
public void doSomeThing() {
if (realSubject == null) {
realSubject = new RealSubject();
}
//事實上是由真實對象完成任務
realSubject.doSomeThing();
}
}