PHP中的Facade设计模式实例

78 阅读1分钟

Facade被用来简化现有复杂接口的使用。它将客户与子系统解耦,因此客户与facade而不是子系统进行交互。在处理遗留代码、第三方代码、复杂代码或难以重构/测试的代码时,它尤其方便。因此,简而言之,facade将丑陋的东西变成了美好的东西。

一个好的facade会有一个带有接口类型提示参数的构造器,并且不会有new 关键字。

如何实现它

  1. 创建一个将成为门面的类。

  2. 把原来的类作为接口类型提示的参数传递给facade的构造函数。

  3. 创建可以使用原类方法的方法。

它是如何工作的

  1. 客户端请求一些东西。

  2. 请求被转到门面。

  3. Facade与相关的子系统对话,以完成该工作。

  4. 子系统在完成工作后回复给门面--(可选)。

  5. Facade回应给客户--(可选)。

例子

interface ShareInterface

正如你所看到的,为了在三个不同的社交媒体渠道上分享一条信息,我们最终重复了三次相同的步骤。如果我们有更多的社交媒体渠道来分享信息,那就更痛苦了。最理想的情况是,一次性在所有社交媒体渠道上分享信息。要做到这一点,我们可以引入一个Facade类,如下图所示。

class SocialMedia

正如你所看到的,我们只需设置一次信息,就可以一次性分享到所有三个社交媒体渠道。