作者 | 小小小咖
本文经授权转载自JAVA小咖秀(ID:javaxiaokashow)
唧唧复唧唧,木兰当户织。不闻机杼声,惟闻女叹息。
外观模式的基本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
木兰获得了战衣,辞别了父母上路,宿营黄河边,听不见父母呼唤女儿的声音,但能听到黄河汹涌奔流的声音。
几年过去了,木兰得胜归来,成为了一代巾帼英雄。
防水耐脏,超大容量双肩包,限时拼团仅需49元
热 文 推 荐
☞当今流行技术,SQL、Java、Python、C++ 皆上榜,它的表现最惊艳!
☞1949-2019,70 年 50 种不同编程语言的“Hello World”大盘点!
☞大白话讲解比特币白皮书,十年后它依然是学习区块链的最佳资料,你真的读懂了吗?
你点的每个“在看”,我都认真当成了喜欢