网站制作报价单模板,达尔罕茂明安网站建设,网站图片要求,陕西百度公司外观模式#xff08;Facade Pattern#xff09;也叫作门面模式#xff0c;通过一个门面#xff08;Facade#xff09;向客户端提供一个访问系统的统一接口#xff0c;客户端无须关心和知晓系统内部各子模块#xff08;系统#xff09;之间的复杂关系#xff0c;其主要…外观模式Facade Pattern也叫作门面模式通过一个门面Facade向客户端提供一个访问系统的统一接口客户端无须关心和知晓系统内部各子模块系统之间的复杂关系其主要目的是降低访问拥有多个子系统的复杂系统的难度简化客户端与其之间的接口。外观模式将子系统中的功能抽象成一个统一的接口客户端通过这个接口访问系统使得系统使用起来更加容易。 简单来说外观模式就是将多个子系统及其之间的复杂关系和调用流程封装到一个统一的接口或类中以对外提供服务。这种模式涉及3种角色。
子系统角色实现了子系统的功能。门面角色外观模式的核心熟悉各子系统的功能和调用关系并根据客户端的需求封装统一的方法来对外提供服务。客户角色通过调用Facade来完成业务功能。
以汽车的启动为例只需按下启动按钮后台就会自动完成引擎启动、仪表盘启动、车辆自检等过程。通过外观模式将汽车启动这一系列流程封装到启动按钮上对于用户来说只需按下启动按钮即可不用太关心具体的细节。UML设计图如下 1定义Engine类
Slf4j
public class Engine {public void startup() {log.info(engine startup...);}public void shutdown() {log.info(engine shutdown...);}
}
2定义Dashboard类
Slf4j
public class Dashboard {public void startup() {log.info(dashboard startup...);}public void shutdown() {log.info(dashboard shutdown...);}
}
3定义SelfCheck类
Slf4j
public class SelfCheck {public void startup() {log.info(SelfCheck startup...);}public void shutdown() {log.info(SelfCheck shutdown...);}
}
4定义门面类Starter封装Engine、Dashboard、SelfCheck
package cn.jaa.facade_pattern;import lombok.extern.slf4j.Slf4j;/*** Author: Jaa* Description: 启动按钮* Date 2023/11/30*/
Slf4j
public class Starter {private Engine engine;private Dashboard dashboard;private SelfCheck selfCheck;public Starter() {this.engine new Engine();this.dashboard new Dashboard();this.selfCheck new SelfCheck();}public void startup() {log.info(car begin startup);engine.startup();dashboard.startup();selfCheck.startup();log.info(car startup finished);}public void shutdown() {log.info(car begin shutdown);engine.shutdown();dashboard.shutdown();selfCheck.shutdown();log.info(car shutdown finished);}
}
5测试外观模式
package cn.jaa.facade_pattern;import lombok.extern.slf4j.Slf4j;/*** Author: Jaa* Description: 外观模式测试类* Date 2023/11/30*/
Slf4j
public class FacadeDemoTest {public static void main(String[] args) {Starter starter new Starter();// 启动汽车starter.startup();// 熄灭汽车starter.shutdown();}
}
运行结果