1。什么是门面模式?为子系统中的一组接口提供一个统一的接口。Facade定义了一个更高级的接口,使子系统更易于使用。FacadePattern:也称为外观模式,要求一个子系统外部与其内部的通信必须通过一个统一的对象进行。Facade模式提供了一个高级接口,使子系统更易于使用。用人类的话说:假设有一个系统A,它提供了四个接口a、b、c、d。系统B为了完成某个业务功能,需要调用系统A的接口a、b、d。采用门面模式,我们提供一个门面接口x,将a、b、d接口的调用包装起来,供A直接使用。系统B。至于为什么要这样做,下面会告诉你。2.门面模式定义①Facade门面角色这个角色知道子系统的所有功能和职责,客户端可以调用这个角色的方法,所有从客户端发出的请求都会委托给相应的子系统,即也就是说,A角色没有实际的业务逻辑,只是一个委托类。②子系统一个子系统角色可以同时拥有一个或多个子系统。每个子系统不是一个单独的类,而是类的集合。子系统不知道外观的存在。对于子系统,外观只是另一个客户端。3.门面模式的通用代码实现/***SubsystemA*/publicclassClassA{publicvoiddoA(){System.out.println("SubsystemAmethod");}}/***子系统B*/publicclassClassB{publicvoiddoB(){System.out.println("子系统B方法");}}/***子系统C*/publicclassClassC{publicvoiddoC(){System.out.println("子系统C方法");}}/***facade角色*/publicclassFacade{privateClassAa=newClassA();私人ClassBb=新ClassB();私人ClassCc=新ClassC();//提供给外部访问的方法publicvoiddoSomething(){this.a.doA();这个.b.doB();这个.c.doc();}}好像没有facade的作用,我们调用三个子系统的方法是一样的,但是如果三个子系统有先后顺序,有不同的网络开销,我们通过facade模式提供的方法可以屏蔽这些区别,让我们只需要调用门面角色提供给我们的方法即可。4、门面模式的优点①减少系统的相互依赖如果不使用门面模式,外部的访问直接渗透到子系统内部,它们之间存在很强的耦合关系。系统设计的强依赖是不能接受的,门面模式的出现很好的解决了这个问题。所有的依赖都依赖于门面对象,与子系统无关。②提高安全性为了使您能够访问子系统的业务,您可以启用该逻辑。如果您不激活外观上的方法,您将永远无法访问。五、门面模式的应用场景①解决可用性问题门面模式可以用来封装系统的底层实现,隐藏系统的复杂性,提供一套更易用、更高层次的解决方案。接口。②解决性能问题通过一次门面接口调用代替多次接口调用,降低网络通信成本,提高客户端响应速度。③解决分布式事务问题,需要调用多个子系统的接口方法,这些接口要么成功,要么失败。我们可以使用门面模式来包装这些子系统接口,然后通过一定的方法保证这些接口在一个事务中。结束。6、适配器模式和门面模式的区别适配器模式:主要是做接口转换,解决原接口和目标接口不匹配的问题。门面模式:主要是接口集成,解决了多个接口调用带来的问题。
