一、引言
外观模式是什么,为什么有外观模式?外观模式怎么实现?
1.外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。
2.目的只有一个,提供一个方法供用户调用,隐藏它的细节。
二、实现外观模式
假设你现在要在家里看电影,为了更好的体验生活,你需要做以下几个不走
- 开电视机
- 开瓶啤酒
- 调灯光
在外观模式的情况下,我们只需要把这三个动作交给一个类来实现,调用这个类的看电影方法即可。类图如下:
相当于在用户和各种设备中间加了一层:外观类,统一对电视机,啤酒,灯光进行调用。
代码如下:
//电视机
public class TV {
public void open(){
System.out.println("打开电视机");
}
}
//啤酒
public class Piper {
public void open(){
System.out.println("打开啤酒");
}
}
//灯光
public class Light {
public void open(){
System.out.println("打开灯光");
}
}
/**
* 外观类
*/
public class Maker {
private TV tv=new TV();
private Piper piper=new Piper();
private Light light=new Light();
public void open(){
tv.open();
piper.open();
light.open();
}
}
//Main方法
public static void main(String[] args) {
//此时我不再调用三种设备,直接调用外观类open,即可完成看电影
Maker maker = new Maker();
maker.open();
}
运行结果如下:
三、结束
外观模式很简单,就是在各个模块中间加一次达到隐藏系统的复杂性,但是外观模式不符合开闭原则,如果要修改程序非常麻烦,所以慎用。