结构型模式——外观模式(Facade)

开头

     今天我们学习一下外观模型,想到外观两个字你会想到什么?一种门面?脸面?一个通往内心深处的接口?外观模型之所以存在,就是为了让接口门面更加好看。如何好看呢?下面我们展示一幅图代表一下门面是多么的关键。



 内容

     当多个客户端连续访问多个子系统时,好比左图,是不是特别繁琐,如果我们给该系统增加一个门面,客户端只需要访问门面就可以访问到自己调用的多个子系统,或者说如果子系统发生改变,客户端还需要不断地更改代码,这样违法了开闭原则,采用外观模式,则不需要改变子系统对象,只需要对门面进行设置即可。

外观模式大致分为两个角色,分别为外观角色(Facade)、子系统角色(SubSystem)

外观角色(Facade):客户端调用他的方法,外观角色中包含一个或者多个子系统的功能,客户端只需要调用外观模式,即可对各个子系统对象进行处理。

子系统角色(SubSystem):一个软件系统中有一个或者对多个子系统,它可以是一个单独的类或者集合,一种实现方法。

 例子:  以我们弄展板为例子,记得作品展展板展示,每个CEO小组有自己的职责,在将展板放回墙上需要的工具,分别是锥子、钉子、展板,我们可以将三者看成三个子系统,如果每个CEO小组都要访问三个子系统就会特别麻烦,后来工具部门的出现,我们只需要告诉工具我们需要什么,它就会同时将三者给我们,不需要在一个个的对三个子系统进行访问,工具部门就好比门面,我们只需要访问一个门面,就可以实现对三个子系统的访问。



总结

外观模式(Facade):为子系统中的一组接口提供一个统一的入口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

优点:

   (1)减少了客户端直接访问子系统,通过外观模式,更加方便的访问子系统。

  (2)减少了子系统和客户端耦合度,子系统变化不会影响客户端,客户端只需要调用外观类即可。

缺点:

    增加新的子系统需要改变外观类和客户端,违背开闭原则

适用环境:

  (1)访问一系列复杂的子系统提供一个简单入口时可以使用外观模式。

  (2)减少客户端和子系统的独立性可以使用外观模式减少两者之间的耦合度。


外观模式是一种简单而且使用频率相当高的一种模式,就一句话,为多个子系统提供统一的接口。降低客户端和子系统之间的耦合度。(可以对比一下适配器模式)

  关于外观模式我们就先学习到这里,很简单很使用的一种模式哦。如果本篇博客对于初学者的您有一定的帮助,记得给小编点赞哦。


猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/80462496