1. 介紹
定義一個高層接口,給子系統中的一組接口提供一個一致的界面,用來訪問子系統的一群接口,也就是說通過定義一個一致的接口,用以屏蔽內部子系統的細節,使得調用端只需跟這個接口發生調用,而無需關心這個子系統的內部細節
2. 代碼實現
/** * @Description :電池充電 * @date :2024/4/23 20:43 */ public class StorateBattery { //電量百分比 private double energy; private static Random rand = new Random(47); public StorateBattery() { energy = rand.nextDouble(); //隨機電量 } //是否有足夠的電量 public boolean hasEnoughenergy(){ return energy > 0.1; } }
/** * @Description :點火開關 * @date :2024/4/23 20:46 */ public class IgnitionLock { public void ignite(){ System.out.println("點火開關開啟"); } }
/** * @Description :啟動機 * @date :2024/4/23 20:47 */ public class Starter { public void work(){ System.out.println("啟動機工作"); } }
/** * @Description :發動機 * @date :2024/4/23 20:47 */ public class Engine { public void run(){ System.out.println("發送機運轉"); System.out.println("汽車啟動"); } }
/** * @Description : * @date :2024/4/23 20:48 */ public class Facade { private StorateBattery storateBattery; private IgnitionLock ignitionLock; private Starter starter; private Engine engine; public Facade(){ storateBattery = new StorateBattery(); ignitionLock = new IgnitionLock(); starter = new Starter(); engine = new Engine(); } /** * 提供統一的接口 */ public void startCar(){ if (storateBattery.hasEnoughenergy()){ ignitionLock.ignite(); starter.work(); engine.run(); } } }
public class Client { public static void main(String[] args) { Facade facade = new Facade(); facade.startCar(); } }
汽車啟動時,司機只需要插入啟動鑰匙,轉一下鑰匙就可以輕易將汽車啟動(當然,汽車檔位和手剎要正確),看似簡單的操作,其背后有一系列部件配合運行,才將汽車順利啟動,這些部件組成了汽車的啟動系統,我們不妨將啟動系統各個機械裝置拆分來看,當作一個個子系統,為了簡化,大致的啟動汽車的原理假設簡化成這樣子:司機轉動鑰匙->點火系統通電->啟動機啟動->帶動發動機啟動->汽車啟動成功。當然,實際要比這個復雜很多
參考:http://www.rzrgm.cn/yxlaisj/p/10519527.html
浙公網安備 33010602011771號