外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一个子系统更加容易使用。
哪些情况使用此模式:
1,设计初期阶段,应该有意识的将不同的两个层分离。层与层之间建立外观模式,降低耦合度。
2,开发阶段,子系统往往变的越来越复杂,大多数模式的使用会产生很多很小的类,增加外观Facade,可以提供一个简单的接口,减少它们之间的依赖。
3,在维护一个遗留的大型系统时,可能系统已经很难维护和扩展,但是它又很重要,新系统要依赖它。那么为新系统开发一个Facade,来提供简单清晰的接口,让新系统和Facade对象交互,Facade与旧代码交互所有复杂工作。
假设存在系统1和2,客户端不关心与系统1、2交互
(代码地址:http://blog.csdn.net/jzhf2012/article/details/40652771)
public class SubSystemOne {
public void method(){
System.out.println("这是系统1");
}
}
public class SubSystemTwo {
public void method(){
System.out.println("这是系统2");
}
}
2外观类,将客户端要交互的系统逻辑封装
public class Facade {
SubSystemOne one;
SubSystemTwo two;
public Facade(){
one = new SubSystemOne();
two = new SubSystemTwo();
}
//要处理的逻辑,将外部系统与one、two系统交互的逻辑放这里,外部系统就不用和one、two交互了,直接与外观类交互
public void method(){
one.method();
two.method();
}
}
3、客户端
public class FacadeClient {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generatedmethod stub
//直接与外观类交互,在此看不到one、two系统
Facade facade = new Facade();
facade.method();
}
}