唧唧復唧唧,木蘭當戶織。不聞機杼聲,惟聞女嘆息。
外觀模式的基本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