Java靜態代理模式

weixin_33782386發表於2018-05-17

靜態代理模式

代理也就是一個人代替另一個人去做模式,在java裡代理就是一個物件代另一個物件去執行它所擁有的方法。實質還是執行被代理物件的方法,如何進行代理?==》就是把被代理的物件作為引數傳入到代理的內部,代理者的內部會自己呼叫被代理者的方法。

靜態代理中代理者和被代理者都要實現相同的介面。

eg:

interface  Marry{
    public void getmarry();
}
class People implements Marry{
    String name;
    public People(String name) {
        this.name =name;
    }
    @Override
    public void getmarry() {
    System.out.println(this.name+" will  maryy today"); 
    }   
}
class WedingConpany implements Marry{
    private People apeople;
    
    public WedingConpany(People aPeople) {
        this.apeople =aPeople;      
    }

    @Override
    public void getmarry() {
        System.out.println("wedding company do some thing before wedding ");
        apeople.getmarry();
        System.out.println("wedding company do some thing after wedding");  
    }   
}

public class StaticClientTets {
    public static void main(String args[]){
        Marry clientmarry =  new WedingConpany(new People("jzm"));
        clientmarry.getmarry();
    }
}

如程式碼所示,結婚公司代people執行了getmarry的方法,並在people的getmarry前後新增了自己的輸出。代理的好處就是可以增強程式碼的重用性,保證核心業務可以被重用。

採用代理模式可以有效的將具體的實現與呼叫方進行解耦,通過面向介面進行編碼完全將具體的實現隱藏在內部。

動態代理

跟java反射有關,後續更新

相關文章