1. 程式人生 > >Java 設計---Proxy 代理模式

Java 設計---Proxy 代理模式

何謂代理模式

       代理模式是指客戶端不直接呼叫服務物件,而是通過代理服務去呼叫物件。

應用場景

         1.當需要為一個物件在不同的地址空間提供區域性的代表時;此時的代理模式是遠端代理。

      目的:

           a.隱藏一個物件存在於不同的地址空間的事實;

            b.遠端機器可能具有更好的計算效能與處理速度,可以快速響應並處理客戶端請求

 

           2.建立開銷非常大的物件時,此時的代理模式稱為虛擬代理:通過使用過一個小的物件代理一個大物件。

        目的:

             減少系統的開銷。

 

           3.控制對原始物件的訪問時,此時的代理模式稱為保護代理:控制目標物件的訪問,給不同使用者提供不同的訪問許可權

          目的:

               用來控制對真實物件的訪問許可權

 

             4.需要在訪問物件時附加額外操作時,此時的代理模式稱為智慧引用代理,額外操作包括耗時操作、計算訪問次數等等 

           目的:

               

在不影響物件類的情況下,在訪問物件時進行更多的操作

 

優缺點

           1.可以很好的保護目標物件。

           2.協調呼叫者和被呼叫者,降低了系統的耦合度

            a.增加代理會降低客戶端對實際物件訪問時間

            b.增加系統的複雜性

 

程式碼實現

       靜態代理:

//create interface
public interface Subject {

    public void init();
}

//create Real Subject
public RealSubject implements Subject {

    @Override
    public void init (){
        System.out.printl("Proxy 靜態代理");
    }
}

//create Proxy Subject
public ProxySubject implements Subject {
    
    private Subject subject;

    public ProxySubject(Subject subject) {
        this.subject = subject;
    }

    @Override
    public void init(){
        subject.init();
    }
}

//Test 
public class Client{
    public static void main(String[] org){
        ProxySubject proxySubject = new ProxySubject();
        proxySubject.init();
    }
}

 

動態代理:

其實在很多配置檔案 都有看到過,在需要的時候初始化物件。