靜態代理模式:這種模式能夠實現幫助被代理者完成一些前期的準備工做和後期的善後工做,可是核心的業務邏輯仍然是由被代理者完成。ide
代碼結構由三部分組成this
(1)接口:主題代理
(2)代理類code
(3)被代理類對象
實現方式:代理類和被代理類要實現同一個主題接口,並且代理類中要有一個被代理類的屬性(target),這樣才能把核心業務邏輯交還給被代理類完成;而一些與核心業務邏輯無關的邏輯,而且需求是多變的,那麼這些邏輯就能夠交給代理類來完成接口
示例get
需求:計算add()的運行時間class
public class StaticProxyPattern {
public static void main(String[] args) {
//使用代理者和被代理者來完成任務
User user = new User();//被代理者對象
UserProxy userProxy = new UserProxy(user);//代理者對象
userProxy.add();
}
}
//聲明接口
interface FeatureDAO {
public abstract void add();
}
//被代理類
class User implements FeatureDAO {
@Override
public void add() {
System.out.println("執行核心邏輯........");
}
}
//代理類class UserProxy implements FeatureDAO { private User target; public UserProxy(User target) { this.target = target; } @Override public void add() { System.out.println("add方法開始執行........"); long startTime = System.currentTimeMillis(); target.add(); long endTime = System.currentTimeMillis(); System.out.println("耗時:" + (endTime-startTime)); System.out.println("add方法結束執行........"); }}