Java面试经验第一季之设计模式——外观模式

外观模式又称门面模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口。

说的简单点就是,将多个类或者子系统组合到一个Facade类中去,客户端访问Facade类,实现各个类或者子系统的统一动作,而不需要分别去执行各个子系统。

角色

1).门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。

2).子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。

3).客户角色:通过调用Facede来完成要实现的功能。

应用场景

1- 为复杂的模块或子系统提供外界访问的模块;

2- 子系统相互独立;

3- 在层析结构中,可以使用外观模式定义系统的每一层的入口。

Java面试经验第一季之设计模式——外观模式

外观模式

优点

  ●  松散耦合

  门面模式松散了客户端与子系统的耦合关系,让子系统内部的模块能更容易扩展和维护。

●  简单易用

  门面模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。

●  更好的划分访问层次

  通过合理使用Facade,可以帮助我们更好地划分访问的层次。有些方法是对系统外的,有些方法是系统内部使用的。把需要暴露给外部的功能集中到门面中,这样既方便客户端使用,也很好地隐藏了内部的细节。

在门面模式中,通常只需要一个门面类,并且此门面类只有一个实例,换言之它是一个单例类。当然这并不意味着在整个系统里只有一个门面类,而仅仅是说对每一个子系统只有一个门面类。或者说,如果一个系统有好几个子系统的话,每一个子系统都有一个门面类,整个系统可以有数个门面类。

希望大家多多评论和关注,有什么不解的可以私信我。

猜你喜欢

转载自blog.csdn.net/qq_41552245/article/details/87867592