代理模式一(靜態代理)
阿新 • • 發佈:2019-01-28
靜態代理是指,代理類在程式執行前就已經定義好,其與目標類的關係在程式執行前就已經確立。
下面直接給出案例:
定義業務介面
package com.demo;
public interface IAccountService {
public void transfer(); //主業務邏輯:轉賬
}
定義目標類定義代理類package com.demo; public class AccountServiceImpl implements IAccountService { @Override public void transfer() { //目標方法 System.out.println("呼叫Dao層,完成轉賬主業務"); } }
測試程式碼:package com.demo; public class AccountServiceImplProxy implements IAccountService{ private IAccountService target; //宣告業務介面物件 public AccountServiceImplProxy() { } public AccountServiceImplProxy(IAccountService target) { //業務介面物件作為構造器引數,用於接收目標物件 this.target = target; } @Override public void transfer() { //代理方法,實現對目標方法功能的增強 System.out.println("對轉賬人身份進行驗證"); target.transfer(); } }
package com.demo;
public class Client {
public static void main(String[] args) {
IAccountService target = new AccountServiceImpl(); //目標物件
IAccountService proxy = new AccountServiceImplProxy(target); //代理物件
proxy.transfer();
}
}