设计模式——外观(门面)模式

首先请出今天的主人公——“黑旋风”李逵
在这里插入图片描述
李逵:“我是不是萌萌哒?”

一部《水浒传》说尽了一群英雄好汉的悲欢离合!经典著作的水浒,含蓄地概括了中国各个朝代的变迁和演变,客观地揭露了顽固的中国伦理道德,以及那些伦理道德对国人的愚弄和危害。

故事剧情

宋江酒后在浔阳楼上题诗,被无为军在闲通判黄文炳解读为反诗,向江州蔡九知府蔡得章告发,宋江因此被打入大牢。其后戴宗为救宋江,传了一封梁山泊造的假信,亦被黄文炳识破。宋、戴二人被判死刑,押到十字路口待斩。

为救二人,梁山二十余条好汉赶到江州,劫了法场。李逵在不知梁山方面行动的情况下,也独自从预先藏身的楼上跳下,砍翻两个刽子手,与梁山众人同时在法场里厮杀。救出宋、戴二人后,李逵杀得性起,逢人便砍,梁山首领晁盖对他喝阻也无效。其后李逵和梁山众人打入无为军,杀了黄文炳,并从此与江州的张顺等人随宋江上了梁山。

从故事剧情中我们得知李逵使用一把板斧劫了法场。
在这里插入图片描述

我们都知道板斧是由木头柄和铁制的斧构成。那么想要得到一把板斧需要这两样物品的组合。
我们于是定义一个木头类和铁类:


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/article/details/85128695

猜你喜欢

转载自blog.csdn.net/qq_33706146/article/details/85339063