1. 程式人生 > >代理模式一(靜態代理)

代理模式一(靜態代理)

靜態代理是指,代理類在程式執行前就已經定義好,其與目標類的關係在程式執行前就已經確立。

下面直接給出案例:

定義業務介面

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();
    }
}