作者 | 小小小咖
本文经授权转载自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”大盘点!
☞程序员有哪些接私活渠道?| 程序员有话说
☞自学编程、玩 vlog,90 后程序员们的冠军之路
☞【经典必看】14个实用的数据库设计技巧
☞贾扬清:为什么说数据智能和云原生之间是“天作之合”?
☞大白话讲解比特币白皮书,十年后它依然是学习区块链的最佳资料,你真的读懂了吗?
你点的每个“在看”,我都认真当成了喜欢