android常用設(shè)計模式之代理設(shè)計模式

定義:代理模式屬結(jié)構(gòu)型設(shè)計模式。為其他對象提供一種代理以控制對這個對象的訪問。

代理模式結(jié)構(gòu)圖

代理類結(jié)構(gòu)圖.jpg

在代理模式中有如下角色:

  • ISubject: 抽象主題類,聲明真實主題與代理的共同接口方法。
  • RealSubject:真實主題類,代理類所代表的真實主題??蛻舳送ㄟ^代理類間接地調(diào)用真實主題類的方法。
  • Proxy:代理類,持有對真實主題類的引用,在其所實現(xiàn)的接口方法中調(diào)用真實主題類中相應(yīng)的接口方法執(zhí)行。

代碼

public interface IShop {
    void buy();
}

public class BuyProxy implements IShop {

    private IShop mShop;

    public BuyProxy(IShop shop){
        mShop = shop;
    }

    @Override
    public void buy() {
        mShop.buy();
    }
}

public class Customer implements IShop {
    @Override
    public void buy() {
        System.out.print("顧客購物");
    }
}

public class BuyProxyTest {
    private Customer mCustomer;
    private BuyProxy mBuyProxy;
    @Before
    public void setUp() throws Exception {
        mCustomer = new Customer();
        mBuyProxy = new BuyProxy(mCustomer);
    }

    @Test
    public void buy() throws Exception {
        mBuyProxy.buy();
    }

}

優(yōu)點

  • 真是主題類就是實現(xiàn)實際的業(yè)務(wù)邏輯,不用關(guān)心其他的非本職工作。
  • 任何主題類隨時和嗯呢該發(fā)生變化,但是因為它實現(xiàn)了公共接口,所以代理類可以不做任何修改就能夠使用。

代碼已上傳github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容