1. 程式人生 > >“戲”說設計模式——外觀(門面)模式

“戲”說設計模式——外觀(門面)模式

首先請出今天的主人公——“黑旋風”李逵

李逵:“我是不是萌萌噠?” 

一部《水滸傳》說盡了一群英雄好漢的悲歡離合!經典著作的水滸,含蓄地概括了中國各個朝代的變遷和演變,客觀地揭露了頑固的中國倫理道德,以及那些倫理道德對國人的愚弄和危害。

故事劇情

宋江酒後在潯陽樓上題詩,被無為軍在閒通判黃文炳解讀為反詩,向江州蔡九知府蔡得章告發,宋江因此被打入大牢。其後戴宗為救宋江,傳了一封梁山泊造的假信,亦被黃文炳識破。宋、戴二人被判死刑,押到十字路口待斬。 [14] 

為救二人,梁山二十餘條好漢趕到江州,劫了法場。李逵在不知梁山方面行動的情況下,也獨自從預先藏身的樓上跳下,砍翻兩個劊子手,與梁山眾人同時在法場裡廝殺。救出宋、戴二人後,李逵殺得性起,逢人便砍,梁山首領

晁蓋對他喝阻也無效。其後李逵和梁山眾人打入無為軍,殺了黃文炳,並從此與江州的張順等人隨宋江上了梁山。

從故事劇情中我們得知李逵使用一把板斧劫了法場。

我們都知道板斧是由木頭柄鐵製的斧構成。那麼想要得到一把板斧需要這兩樣物品的組合。

我們於是定義一個木頭類和鐵類:

public class FaMuGong {//伐木工
    public void FaMu(){//伐木
        System.out.println("我是伐木工,我伐木。得到【木頭】");
    }
}

public class TieJiang {//鐵匠
    public void LianTie(){//鍊鐵
        System.out.println("我是鐵匠,我鍊鐵。得到【鐵】");
    }
}

接下來,有請“黑旋風”李逵,那麼他的情節就是打抱不平

public class LiKui {//李逵
    public void DaBaoBuPing(String BanFu){
        System.out.println("我是李逵,我打抱不平。得到【板斧】");
    }
}

 這個故事是在江州發生的,所以我們來描繪一個場景為眾英雄好漢提供展示情節的舞臺。

public class JiangZhou {//江州

    public static void main(String[] args) {
        //找伐木工,得到【木頭】
        FaMuGong faMuGong = new FaMuGong();
        faMuGong.FaMu();
        //找鐵匠,得到【鐵】
        TieJiang tieJiang = new TieJiang();
        tieJiang.LianTie();
        //李逵開始劫法場,打抱不平!!!
        LiKui liKui = new LiKui();
        liKui.DaBaoBuPing();
    }
}

劇情開始!action!

那麼問題來了,李逵有點不耐煩了。

李逵:“俺打抱不平,使一把板斧,我還要去伐木和鍊鐵啊!!!氣煞我也

那麼我們應該怎麼辦呢?其實李逵好漢去武器店買一把不就問題解決了嘛!這樣,我們來看看這個武器店是什麼樣的

public class WuQiDian {//武器店
    private FaMuGong faMuGong;//伐木工
    private TieJiang tieJiang;//鐵匠

    public WuQiDian() {
        this.faMuGong = new FaMuGong();
        faMuGong.FaMu();//從伐木工那裡得到【木頭】
        this.tieJiang = new TieJiang();
        tieJiang.LianTie();//從鐵匠那裡得到【鐵】
    }

    public String buy(){
        String BanFu = "板斧";
        System.out.println("本店出售【板斧】");
        return BanFu;
    }
}

重新定義一個江州場景

public class JiangZhou {//江州

    public static void main(String[] args) {

        WuQiDian wuQiDian = new WuQiDian();
        LiKui liKui = new LiKui();
        String BanFu = wuQiDian.buy();//從武器店得到板斧

        liKui.DaBaoBuPing(BanFu);//開始打抱不平
    }
}

劇情開始!action!

我們看到李逵直接從武器店得到了板斧,並不需要分別找到伐木工和鐵匠,這樣簡化了得到板斧的流程,大大縮短了時間。

在生活也是如此的,我們購買的大部分物品都是加工或再加工好的,我們使用即可,完全不需要考慮它的構成和原理。

在一個大系統中,會有很多小的元件,這些元件之間有著複雜的邏輯關係,對於我們來說,直接使用這些小的元件會變得十分麻煩,所以通過“外觀模式”就相當於一個“武器店”,相當於一個介面對外界暴露,我們使用即可。

加個關注吧,下次接著看!謝謝!!!

https://blog.csdn.net/wfy2695766757