外观模式(门面模式)
门面(外观)模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。
使用场景
1、客户只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式。
2、当需要跟踪原系统的使用情况时 ,使用门面模面模式。因为所有对系统的访问都经过FACADE,所以可以很容易地监视系统的使用 。如使用中根据情况记录日志。
3、 希望封装和隐藏原系统时。
4、编写新类的成本小于所有人使用原系统使用所需的成本时
外观(门面)模式
将复杂的子系统调用逻辑封装起来,便于客户端调用。
子系统类
//子系统(服务类)
public class Service1 {
public boolean isOK(int sigin){ //检查是否通过
return sigin==1?true:false;
}
}
-----------------------------
public class Service2 {
public boolean isOK(int sigin){ //检查是否通过
return sigin==1?true:false;
}
}
------------------------------
public class Service3 {
public boolean isOK(int sigin){ //检查是否通过
return sigin==1?true:false;
}
}
在一个逻辑操作中需要用到的所有子系统
门面类
//门面类
public class Facade {
Service1 service1=new Service1();
Service2 service2=new Service2();
Service3 service3=new Service3();
public boolean check(int sigin) {
if(!service1.isOK(sigin)) return false;
if(!service2.isOK(sigin)) return false;
if(!service3.isOK(sigin)) return false;
return true;
}
}
将所有子系统调用逻辑与顺序封装在门面类中,既简化了客户端调用、也可以在调用依次过程中进行记录日志等逻辑。
测试类
//测试类
class Test {
public static void main(String[] args) {
Facade facade=new Facade();
System.out.println(facade.check(1));
}
}
客户类只需要调用门面类的方法即可,封装省去了繁琐的步骤。