❝唧唧复唧唧,木兰当户织。不闻机杼声,惟闻女叹息。
❞
外观模式的基本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 排版