外观模式:初探一二
最编程
2024-08-05 21:59:02
...
外观模式,它又称什么模式?
它是什么类型的模式?它的使用场景,你知道吗?
外观模式(facade pattern),又称门面模式,是一种结构型模式,能为程序库、框架、复杂系统提供一个高层面的接口,以供客户端或使用者访问。
优点:减少了系统间的相互依赖,提高了系统灵活性,提供了系统安全性。
缺点:不符合开闭原则。
业务场景:系统内部复杂,客户端无需知道系统的复杂,更不能向客户端开放复杂的接口,向客户端开放简单而统一的一个接口即可。
关键代码:在客户端与系统之间增加一个独立的类。该类与客户端解耦。该类与系统耦合,将调用顺序、依赖关系处理好。
下面看UML类图关系:
代码实现步骤:
步骤1:计算机接口;
/**
* 1.计算机接口
* @author 程就人生
* @Date
*/
public interface IComputer {
// 启动方法
public void start();
}
步骤2:计算机接口实现类;
/**
* 2.1 计算机启动接口实现类--加电操作
* @author 程就人生
* @Date
*/
public class AddElectricity implements IComputer {
@Override
public void start() {
System.out.println("第一步:加电");
}
}
/**
* 2.2 计算机启动接口实现类--BIOS启动
* @author 程就人生
* @Date
*/
public class Bios implements IComputer{
@Override
public void start() {
System.out.println("第二步:BIOS启动,POST自检(Power-On-self-test)");
}
}
/**
* 2.3 计算机启动接口实现类--启动顺序
* @author 程就人生
* @Date
*/
public class OperOrder implements IComputer {
@Override
public void start() {
System.out.println("第三步:执行启动顺序");
}
}
/**
* 2.4 计算机启动接口实现类--主引导记录
* @author 程就人生
* @Date
*/
public class MBR implements IComputer {
@Override
public void start() {
System.out.println("第四步:主引导记录(Master Boot Record)");
}
}
/**
* 2.5 计算机启动接口实现类--硬盘启动
* @author 程就人生
* @Date
*/
public class Harddisk implements IComputer{
@Override
public void start() {
System.out.println("第五步:硬盘启动");
}
}
/**
* 2.6 计算机启动接口实现类--操作系统启动
* @author 程就人生
* @Date
*/
public class OperSystem implements IComputer {
@Override
public void start() {
System.out.println("第六步:操作系统启动");
}
}
步骤3:门面装饰类;
/**
* 3.门面模式-电脑开关按钮
* @author 程就人生
* @Date
*/
public class ComputerButton {
private IComputer addElectricity;
private IComputer bios;
private IComputer operOrder;
private IComputer mbr;
private IComputer harddisk;
private IComputer operSystem;
public ComputerButton(){
System.out.println("电脑准备启动了....");
addElectricity = new AddElectricity();
bios = new Bios();
operOrder = new OperOrder();
mbr = new MBR();
harddisk = new Harddisk();
operSystem = new OperSystem();
}
public void start(){
// 1. 加电
addElectricity.start();
// 2. Bios启动
bios.start();
// 3. 执行启动顺序
operOrder.start();
// 4.主引导记录
mbr.start();
// 5.硬盘启动
harddisk.start();
// 6.操作系统启动
operSystem.start();
System.out.println("电脑启动完毕~!");
}
}
步骤4:测试代码;
// 客户端只需轻轻一按计算机的开关按钮,即可打开电脑开始工作
ComputerButton computerButton = new ComputerButton();
computerButton.start();
测试结果:
电脑准备启动了....
第一步:加电
第二步:BIOS启动,POST自检(Power-On-self-test)
第三步:执行启动顺序
第四步:主引导记录(Master Boot Record)
第五步:硬盘启动
第六步:操作系统启动
电脑启动完毕~!
这段代码的意思是:电脑启动,需要启动很多软件和硬件模块;这些模块很复杂,使用电脑的人不一定了解电脑启动的原理和硬件结构,只需要按下电脑上的启动开关,即可打开电脑。
最后总结
外观模式,在我们的生活中无处不在。比如你去餐厅点餐,你只需要告诉服务员你想要的菜品,服务员则会把做好的菜品送到你的餐桌上。而作为客户的我们,不需要知道厨房有几个厨师,他们是怎么做菜的,他们需要哪些厨具和食材等等这些细节。这就是外观模式,也叫门面模式。