设计模式之门面(外观)模式(Facade)
外观模式的主要解决的问题是:隐藏具体的内部实现,给外界的调用提供一个统一简单的接口,降低程序调用上面的耦合。比如我们驾驶一辆汽车,我们不需要考虑发动机的齿轮是怎么运转的,刹车片是怎么来刹车的。我们只需要有几个踏板,一个方向盘,几个按钮就可以驾驶一辆汽车了。
这里我实现的是一个电脑开机的过程,同样电脑开机的具体操作已经被电脑封装起来了,我们只需要按一个按钮,就可以开机了。幕后的CPU,硬盘,显示器的一系列启动都被隐藏起来。
CPU类:
public class CPU { public void work() { System.out.println("CPU is working..."); } }
硬盘类:
public class Disk { public void work(){ System.out.println("Disk is working..."); } }
显示器类:
public class Screen { public void work() { System.out.println("Screen is working..."); } }
电脑类:(Facade)
public class Computer { public void startUp() { new CPU().work(); new Disk().work(); new Screen().work(); } }
测试类:
public class Main { public static void main(String[] args) { new Computer().startUp(); } }
运行结果:
CPU is working... Disk is working... Screen is working...
其中电脑类就是一个Facade,代替用户和CPU,硬盘,显示器等打交道,隐藏了内部的细节实现,用户甚至不需要知道CPU,硬盘,显示器的存在。
项目源码链接:http://www.kuaipan.cn/file/id_132802506211221447.htm?source=1