漫画:用木兰从军说外观模式

316 阅读1分钟

唧唧复唧唧,木兰当户织。不闻机杼声,惟闻女叹息。

外观模式的基本uml:

木兰做战衣的uml图:

代码

public class FineHorse {

    public void eastMarketGet() {
        System.out.println("东市买骏马~");
    }
}

public class Saddle {

    public void westernMarketGet() {
        System.out.println("西市买鞍鞯~");
    }
}

public class BridleHead {

    public void southMarketGet() {
        System.out.println("南市买辔头~");
    }
}

public class Whip {

    public void northMarketGet() {
        System.out.println("北市买长鞭~");
    }

}

public class WeaponMaster {

    private BridleHead bridleHead = new BridleHead();
    private FineHorse fineHorse = new FineHorse();
    private Saddle saddle = new Saddle();
    private Whip whip = new Whip();

    public void makeWararmor() {

        fineHorse.eastMarketGet();
        saddle.westernMarketGet();
        bridleHead.southMarketGet();
        whip.northMarketGet();

        System.out.println("装备获取成功~");
        System.out.println("恭喜,成功组装战袍!");
    }

    public void give(String name) {
        System.out.println("送战袍给:" + name);
        System.out.println(name + "获取到战袍~");
    }
}

public class HuaMuLan {

    public static void main(String[] args) {

        WeaponMaster weaponMaster = new WeaponMaster();
        weaponMaster.makeWararmor();
        weaponMaster.give("花木兰");

    }
}

外观模式

一个系统的功能越来越强,子系统(子模块)就越来越多,因此客户端如果挨个去调用子系统就会变的复杂,还需要对子系统有较深的了解,如果功能发生改变的时候,客户端也需要改变,违背了开闭原则以及迪米特法则,所以我们可以为子系统提供一个共同的对外接口。客户端可以直接和这个外观对象沟通。

实际应用

详细大家可以去看源码

jdk : java.lang.Class

spring :org.springframework.jdbc.support.JdbcUtils

tomcat : org.apache.catalina.connector.Request

mybatis : org.apache.ibatis.session.Configuration

木兰获得了战衣,辞别了父母上路,宿营黄河边,听不见父母呼唤女儿的声音,但能听到黄河汹涌奔流的声音。

几年过去了,木兰得胜归来,成为了一代巾帼英雄。

文章持续更新中,⛽️。另外 博主整理 + 原创 15万字面试题,包括17个专题。关注“Java小咖秀”回复“面试”即可获得Java小咖秀面试笔记.pdf

本文使用 mdnice 排版