Facade被用来简化现有复杂接口的使用。它将客户与子系统解耦,因此客户与facade而不是子系统进行交互。在处理遗留代码、第三方代码、复杂代码或难以重构/测试的代码时,它尤其方便。因此,简而言之,facade将丑陋的东西变成了美好的东西。
一个好的facade会有一个带有接口类型提示参数的构造器,并且不会有new 关键字。
如何实现它
-
创建一个将成为门面的类。
-
把原来的类作为接口类型提示的参数传递给facade的构造函数。
-
创建可以使用原类方法的方法。
它是如何工作的
-
客户端请求一些东西。
-
请求被转到门面。
-
Facade与相关的子系统对话,以完成该工作。
-
子系统在完成工作后回复给门面--(可选)。
-
Facade回应给客户--(可选)。
例子
interface ShareInterface
正如你所看到的,为了在三个不同的社交媒体渠道上分享一条信息,我们最终重复了三次相同的步骤。如果我们有更多的社交媒体渠道来分享信息,那就更痛苦了。最理想的情况是,一次性在所有社交媒体渠道上分享信息。要做到这一点,我们可以引入一个Facade类,如下图所示。
class SocialMedia
正如你所看到的,我们只需设置一次信息,就可以一次性分享到所有三个社交媒体渠道。