外观模式
为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
实现原理
等于说,把子系统的各个接口的方法,封装成一个方法调用,实现一个功能。
小案例
我们在外边观察计算机的开机是怎么样的?
按一下开机按钮就行了!
但是,开机过程真的这么简单吗?
真正的开机过程相当复杂。我就拿一些大多数人都知道*的过程来分析一下外观模式。
主要部分:CPU、显卡、BIOS系统、主板、内存、硬盘、Windows系统。
这些部分都有自己的类,当作子系统,然后有个“计算机外观”去吧各个子系统的方法封装成一个方法“开机”。
CPU
package 外观模式;
public class CPU {
public void 自检() {
System.out.println("CPU初始化");
}
}
显卡
package 外观模式;
public class 显卡 {
public void 自检() {
System.out.println("显卡初始化");
}
}
BIOS系统
package 外观模式;
public class BIOS {
public void 加载BIOS系统() {
System.out.println("加载BIOS系统完成");
}
public void 硬件检测系统() {
System.out.println("开始自检");
}
public void 转移硬件操作权限() {
System.out.println("硬件自检完成,一切正常,将硬件操作转移给windows系统");
}
}
主板
package 外观模式;
public class 主板 {
public void 自检() {
System.out.println("主板自检完成,一切正常");
}
}
内存
package 外观模式;
public class 内存 {
public void 自检() {
System.out.println("内存自检完成,一切正常");
}
}
硬盘
package 外观模式;
public class 硬盘 {
public void 自检() {
System.out.println("硬盘自检完成,一切正常");
}
}
Windows系统
package 外观模式;
public class Windows {
public void 开机() {
System.out.println("开机完成");
}
}
计算机外观
package 外观模式;
public class 计算机外观 {
public CPU cpu = new CPU();
public 显卡 显卡 = new 显卡();
public BIOS bios = new BIOS();
public 主板 主板 = new 主板();
public 内存 内存 = new 内存();
public 硬盘 硬盘= new 硬盘();
public Windows w = new Windows();
public void 开机() {
cpu.自检();
显卡.自检();
bios.加载BIOS系统();
bios.硬件检测系统();
主板.自检();
内存.自检();
硬盘.自检();
bios.转移硬件操作权限();
w.开机();
}
}
用户
package 外观模式;
public class 用户 {
public static void main(String[] args) {
计算机外观 计算机外观 = new 计算机外观();
计算机外观.开机();
}
}
运行结果
CPU初始化
显卡初始化
加载BIOS系统完成
开始自检
主板自检完成,一切正常
内存自检完成,一切正常
硬盘自检完成,一切正常
硬件自检完成,一切正常,将硬件操作转移给windows系统
开机完成
总结
大家从这里边应该可以看到,从外边观察,和实际进行操作的差别了。
那么大家再想一下,Windows运行一个软件仅仅是双击那么简单吗?
关机是那么简单吗?
相信大家对外观模式也有一定了解了,从编程的角度上来说,我们把所有的子系统,各种细节都写了出来,但是为了方便管理和调用,也为了其他人阅读维护方便,把一些方法的组合封装成一个“功能”。这就是外观模式!