为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。
- (1)子系统类:实现该子系统功能。
- (2)外观类:包含各个子系统的功能,为多个子系统对外提供统一接口。
- (3)客户类:访问外观类的统一接口
-
- (1)减少系统依赖,降低客户端调用系统难度。
- (2)提高灵活性
- (3)提高安全性
-
- (1)外观类关联太多复杂子系统类耦合度太高,并且扩展子系统需要修改相关联的外观类,不符合开闭原则。
-
- (1)为复杂的模块或子系统提供外界访问的模块
- (2)子系统相对独立
-
以电脑开机步骤为例,参考[网上文章],我总结了以下几个步骤(https://www.cdsy.xyz/computer/system/OS/230201/cd40028.html)
- (1)电源供电
- (2)CPU执行指令,跳转到BIOS
- (3)BIOS进行加电自检,初始化,显示启动画面,启动系统
-
- public class Power {
- public void work(){
- System.out.println("电源供电");
- }
- }
-
- public class CPU {
- public void work(){
- System.out.println("CPU执行命令");
- }
- }
-
- public class Power {
- public void work(){
- System.out.println("电源供电");
- }
- }
-
- public class BIOS {
- public void work(){
- System.out.println("加电自检");
- System.out.println("初始化");
- System.out.println("显示启动画面");
- System.out.println("启动系统");
- }
- }
-
集成上面的部件
- public class Computer {
- private Power power;
- private CPU cpu;
- private BIOS bios;
-
- public Computer() {
- this.power = new Power();
- this.cpu = new CPU();
- this.bios = new BIOS();
- }
-
- public void start() {
- System.out.println("开始启动电脑:");
- power.work();
- cpu.work();
- bios.work();
- }
- }
-
启动系统
- public class Client {
- public static void main(String[] args) {
- Computer computer = new Computer();
- computer.start();
- }
- }
-
效果: