外观模式是封装思想的一种表现形式,它可以帮助我们隐藏系统的复杂性,只给用户提供一个可以访问的接口。 外观模式非常容易理解和实现,它属于结构型设计模式。
场景模拟
假设一台电脑,它包含了 CPU(处理器),Memory(内存) ,Disk(硬盘)这几个部件,若想要启动电脑,则先后必须启动 CPU、Memory、Disk,关闭时也需要按照相应顺序。利用门面模式可以将开关过程简化。
class CPU {
startup():void{
console.log("cpu startup!");
}
shutdown():void{
console.log("cpu shutdown!");
}
}
class Memory {
startup():void{
console.log("memory startup!");
}
shutdown():void{
console.log("memory shutdown!");
}
}
class Disk {
startup():void{
console.log("disk startup!");
}
shutdown():void{
console.log("disk shutdown!");
}
}
class Computer {
private cpu:CPU;
private memory:Memory;
private disk:Disk;
constructor(){
this.cpu = new CPU();
this.memory = new Memory();
this.disk = new Disk();
}
startup(){
console.log("start the computer!");
this.cpu.startup();
this.memory.startup();
this.disk.startup();
console.log("start computer finished!");
}
shutdown(){
console.log("begin to close the computer!");
this.cpu.shutdown();
this.memory.shutdown();
this.disk.shutdown();
console.log("computer closed!");
}
}
let computer:Computer = new Computer();
computer.startup();
computer.shutdown();