外观模式(Facade):又称门面模式,是给子系统或客户端一个一致的界面,从面定义一个高层的接口,这个接口使得子系统或客户端更加容易使用。从而降低了子系统或客户端调用不同接口带来的复杂性。
如图:
未使用外观模式:
网上一例:简单意思是打开第一个抽屉取得第二个抽屉的钥匙,然后打开第二个抽屉取得文件。
实现:
public class DrawOne{
public void open(){
//第一个抽屉打开
//取得钥匙
}
}
public class DrawTwo{
pubic void open(){
//打开第二个抽屉
//取得文件
}
}
//调用
main(){
DrawOne one=new DrawOne();
DrawTwo two=new DrawTwo();
one.open();
two.open();
}
使用外观模式:
//门面
public class DrawFacade{
DrawOne one=new DrawOne();
DrawTwo two=new DrawTwo();
public void open(){
one.open();
two.open();
}
}
//调用
main(){
DrawFacade facade=new DrawFacade();
facade.open();
}
使用场景:
1、在复杂系统的设计时,如果一个系统需要访问数个其他的系统或者几个系统间的相互访问,这是就可以使用一个中间平台或系统进行一个统一的管理,这样减小的系统间的耦合,同时也可以减少处理对象的数目。
2、在程序中在很多地方需要调用相同代码,这时就可以提供一个统一的接口,这样就减少代码依赖关系。
3、比如一些系统为了安全性或者网络原因,他会提供一个中间平台进行统一,这个平台就相当于一个门面。