基本介绍:
(1)外观模式:也叫“过程模式”,外观模式为子系统中的一组接口提供一个一致性的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用
(2)外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。
角色说明:
1.外观(Facade)角色:为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当子系统的对象。
2.子系统(Sub System)角色:指模块或者子系统,处理Facade对象指派的任务,他是功能的提供者。
3.调用者(Client)角色:通过一个外观角色访问各个子系统的功能。
public class FacadePattern {
public static void main(String[] args) {
Facade f = new Facade();
f.method();
}
}
//外观角色
class Facade {
private SubSystem01 obj1 = new SubSystem01();
private SubSystem02 obj2 = new SubSystem02();
private SubSystem03 obj3 = new SubSystem03();
public void method() {
obj1.method1();
obj2.method2();
obj3.method3();
}
}
//子系统角色
class SubSystem01 {
public void method1() {
System.out.println("子系统01的method1()被调用!");
}
}
//子系统角色
class SubSystem02 {
public void method2() {
System.out.println("子系统02的method2()被调用!");
}
}
//子系统角色
class SubSystem03 {
public void method3() {
System.out.println("子系统03的method3()被调用!");
}
}
外观模式是一个很简单的模式,感觉我们都可以不在意这个模式,写代码的时候就会自动考虑到,上面这个案例如果写的复杂一些就是子系统之间还有调用,我们也无需关心,这个模式满足迪米特法则的典范。
框架中使用:Mybatis的Configuration.newMetaObject()中使用过程如下图