门面模式/外观模式
门面模式(Facade),它隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。通过对客户端提供一个统一的接口用于访问子系统中的一群接口。
优缺点:
1、子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统模块进行交互,只需要跟门面类交互就可以了。
2、将客户端与子系统解耦,使得子系统内部模块更容易扩展和维护
3、通过使用Facade更好的划分访问层次,有些方法是对外的,有些方法是对内的,把需要对外的功能集中到门面中,方便了客户端的调用。
效果图如下所示:
如上图所示,子系统的使用变得更加简单,客户端只需要与Facade外观角色交互,降低了系统的 耦合。所以Facade起到了解耦作用。
包含的角色:
- Facade 门面角色:客户端可以调用这个角色的方法,该角色知晓相关子系统的功能。在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去。
- SubSystem 子系统角色:可以同时有一个或者多个子系统。每个子系统都不是一个单独的类,而是一个类的集合(如上面的子系统就是由 SubSystemA、SubSystemB、SubSystemC、SubSystemD 几个类组合而成)。每个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并不知道门面的存在,对于子系统而言,门面角色仅仅是另外一个客户端而已。
案例:奥迪A4L汽车启动
如果要启动奥迪A4L,例如包括发动起启动、齿轮转动、车灯两起 三个步骤
如果不使用门面模式,那可能启动步骤都在一个方法里面写,可读性差而且不易读懂
如果使用了门面模式,三个步骤的实现类:
门面facade类:
测试客户端调用:
facade类相当于Engine、Wheel、Light三个模块的外观界面,有了facade类客户端就不需要亲自调用这三个模块了,也不用知道三个模块内部实现的细节,即客户端只需要和facade交互就行。文章来源:https://www.toymoban.com/news/detail-409085.html
一句话:说白了门面模式就是对代码进行方法封装文章来源地址https://www.toymoban.com/news/detail-409085.html
到了这里,关于Java设计模式之门面模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!