大話java的代理模式

1.代理模式的介紹
代理模式是java中常見,也是重要的一種模式,好比spring中的aop就是代理模式的一種應用。
那麼代理模式究竟有什麼做用?代理模式就是「控制和管理對象的訪問」。相對於簡單粗暴地直接訪問對象、調用對象的方法,使用代理模式能夠在對象的使用時,進行預處理和過後處理等。好比權限控制、日誌記錄。固然你能夠直接在對象裏,作這些操做,可是這樣耦合性過高,不利於代碼的維護。java

2.如何使用代理模式
一個實現代理模式的demo,主要須要3個類spring

1)委託類接口ide

//委託類接口
public interface TestService {

    void business();
    
}

2)委託類的實現測試

//委託類的實現類
public class TestImplement implements TestService{

    @Override
    public void business() {
        System.out.println("do the busniess");
    }
    
}

3)代理類this

//委託類的代理類,注意須要implements 委託類
public class StaticProxy implements TestService{

    private TestService testService;

    public StaticProxy(TestService testService) {
        this.testService = testService;
    }
    
    @Override
    public void business() {
        //能夠作一些預處理,好比數據處理、權限控制等
        System.out.println("before invoke,I can do something.");
        
        testService.business();
        
        //能夠作一些過後處理,好比執行結果的記錄,事務提交等
        System.out.println("before invoke,I can do something.");
    }
}

測試方法:代理

TestService service = new TestImplement();
StaticProxy proxy = new StaticProxy(service);
proxy.business();

測試輸出結果:
before invoke,I can do something.
do the busniess
before invoke,I can do something.日誌

以上就是代理的簡單的一種實現,咱們也叫靜態代理。由於這樣的實現方式,須要爲每一個委託類都寫代理類,會產生大量的代理類,也不利於代碼的複用和項目的解耦,因此咱們會使用動態代理去解決這些問題。關於動態代理的詳細介紹會在下篇中繼續大話。code

這是本人對於代理模式的一些理解,十分歡迎你們的指教和討論。對象

相關文章
相關標籤/搜索