設計模式: 代理模式--靜態(tài)代理

代理模式屬于結(jié)構(gòu)形設計模式

為什么會用到代理模式:
例如,單身的碼農(nóng)找對象時會請媒婆來幫助自己,這時候就使用到了代理模式,碼農(nóng)就是一個被代理類,而媒婆就是一個代理類,客戶端只需要調(diào)用代理類(媒婆)的方法就可以實現(xiàn)被代理類(碼農(nóng))的需求。

靜態(tài)代理: 先上代碼

// 首先創(chuàng)建一個接口(人類)
public interface StaticProxyPerson {
    //  定義接口‘找對象’
    void findLove();
}
/**
 * 定義程序員類 實現(xiàn)StaticProxyPerson接口
 */
public class ChengXuYan implements StaticProxyPerson {

    /**
     * 實現(xiàn)'找對象'接口
     */
    public void findLove() {
        System.out.println("被代理類: 漂亮");
    }
}
/**
 * 代理類 '媒婆'
 */
public class MeiPo implements StaticProxyPerson {

    private StaticProxyPerson target;

    public MeiPo(StaticProxyPerson target) {
        this.target = target;
    }


    public void findLove() {
        System.out.println("代理類: 開始給被代理類找對象");
        System.out.println("代理類: 找到了,名字叫翠花,你看看怎么樣? @被代理類");
        target.findLove();
        System.out.println("代理類: 那好,我再去找翠花聊聊");
    }
}
public static void main(String[] args) {
        // 被代理類
        ChengXuYan chengXuYan = new ChengXuYan();
        // 代理類
        MeiPo meiPo = new MeiPo(chengXuYan);
        meiPo.findLove();
    }

最后運行結(jié)果: 
           代理類: 開始給被代理類找對象
           代理類: 找到了,名字叫翠花,你看看怎么樣? @被代理類
           被代理類: 漂亮
           代理類: 那好,我再去找翠花聊聊

以上就是java靜態(tài)代理的實現(xiàn), 但是在實現(xiàn)了業(yè)務的同時也有很多缺點:

  • 當被代理類增加新的方法時 代理類也要同時增加 違背了開閉原則
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

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