外观模式
定义
外观模式(Facade Pattern):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。
简单的说,就是我们需要使用多个类的多个方法来实现一个功能,然后为了简化用户的使用,我们将这一系列的调用通过一个Facade封装成一个方法,这样用户使用的时候只需要调用Facade封装过后的一个方法就可以了。
示例与代码
//定义多个子系统和对应的需要完成的任务
class SubSystem1 {
public task1() {}
}
class SubSystem2 {
public task2() {}
}
class SubSystem3 {
public task3() {}
}
//定义外观(Facade)
class Facade {
SubSystem1 s1 = new SubSystem();
SubSystem1 s2 = new SubSystem();
SubSystem1 s3 = new SubSystem();
taskAll() {
s1.task1();
s2.task2();
s3.task3();
}
}
//使用
public class Main {
public static void main(String[] args) {
new Facade().taskAll();//只需要调用一个方法即可
}
}
总结
外观模式是一个比较简单的设计模式,但是不符合开闭原则,因为要改变一个低层次的类,高层次的外观(Facade)也需要修改代码。