Java23种设计模式
当系统拥有多个子系统的时候,为了方便客户使用,结构上封装一层统一调用的外观,这种模式叫做外观模式。
需求:开机关机的时候,对功能进行封装:
启动电脑(按一下电源键):启动CPU、启动内存、启动硬盘
关闭电脑(按一下电源键):关闭硬盘、关闭内存、关闭CPU
- 定义CPU类、内存类、硬盘类,分别都具有启动和关闭方法
public class CPU {
public void startCPU(){
System.out.print("启动CPU!\n");
}
public void stopCPU(){
System.out.print("关闭CPU!\n");
}
}
public class Memory {
public void startMemory(){
System.out.print("启动内存!\n");
}
public void stopMemory(){
System.out.print("清理内存!\n");
}
}
public class Disk {
public void startDisk(){
System.out.print("启动硬盘!\n");
}
public void stopDisk(){
System.out.print("关闭硬盘!\n");
}
}
- 创建计算机类,里面包含开机和关机。
public class ComputerMaker {
private CPU cpu;
private Memory memory;
private Disk disk;
public ComputerMaker(CPU cpu, Memory memory, Disk disk) {
this.cpu = cpu;
this.memory = memory;
this.disk = disk;
}
public void startComputer(){
cpu.startCPU();
memory.startMemory();
disk.startDisk();
}
public void stopComputer(){
disk.stopDisk();
memory.stopMemory();
cpu.stopCPU();
}
}
- 创建客户端Test,可以直接调用开机和关机。
public class Test {
public static void main(String[] args) {
ComputerMaker maker = new ComputerMaker(
new CPU(),new Memory(),new Disk()
);
System.out.print("开机\n");
maker.startComputer();
System.out.print("=============\n");
System.out.print("关机\n");
maker.stopComputer();
}
}
打印结果
开机
启动CPU!
启动内存!
启动硬盘!
=============
关机
关闭硬盘!
清理内存!
关闭CPU!
外观模式是隐藏了子系统的具体实现过程,简化客户端的调用。