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(); } }
汽车启动时,司机只需要插入启动钥匙,转一下钥匙就可以轻易将汽车启动(当然,汽车档位和手刹要正确),看似简单的操作,其背后有一系列部件配合运行,才将汽车顺利启动,这些部件组成了汽车的启动系统,我们不妨将启动系统各个机械装置拆分来看,当作一个个子系统,为了简化,大致的启动汽车的原理假设简化成这样子:司机转动钥匙->点火系统通电->启动机启动->带动发动机启动->汽车启动成功。当然,实际要比这个复杂很多
参考:https://www.cnblogs.com/yxlaisj/p/10519527.html