1. 程式人生 > >靜態代理模式學習

靜態代理模式學習

時間 str 測試類 interrupt string lee 對象 exc ati

靜態代理模式

代理模式(Proxy):為其他對象提供一種代理以控制對這個對象的訪問。代理模式說白了就是“簡單對象的 代表”,在訪問對象時引入一定程度的間接性,因為這種間接性可以附加很多用途。

// 測試類
public class ProxyPattern {

    public static void main(String[] args) {
        Action userAction = new UserAction();// 被代理對象
        ActionProxy proxy = new ActionProxy(userAction);// 代理對象
        proxy.doAction();
    }
}

// 定義接口
interface Action {
    public void doAction();
}

// 用戶的動作,現在我想計算一下員工一共工作了多長時間
class UserAction implements Action {

    @Override
    public void doAction() {
        System.out.println("員工開始工作。。");
    }
}

// 增加動作代理類,實現業務接口
class ActionProxy implements Action {

    private Action target;// 被代理的對象

    public ActionProxy(Action target) {
        this.target = target;
    }

    // 執行操作
    @Override
    public void doAction() {
        long start = System.currentTimeMillis();

        try {// 讓線程停一會
            Thread.sleep(2000);
            target.doAction();// 執行真正的業務
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        long end = System.currentTimeMillis();
        System.out.println("一共工作了" + (end - start) + "毫秒");
    }

}

靜態代理模式學習