简单工厂
什么是工厂?假设你订购了一辆新车;经销商将你的订单发送给工厂,然后工厂为你制造汽车。汽车以组装好的形式发送给您,您无需关心它是如何制造出来的。
同样,软件工厂也会为你生产对象。工厂接收您的请求,使用构造函数组装对象,然后交还给您使用。其中一种工厂模式被称为简单工厂。让我向你展示它是如何工作的。
首先,我们定义一个抽象类,并希望用其他类来扩展它:
Unresolved include directive in modules/ROOT/pages/ch03/ch3-02.adoc - include::example$/Chapter 3/SimpleFactory/Notifier.php[]
该类允许我们使用通用方法,并定义我们希望在工厂中构建的所有类都具有的通用功能。我们也可以使用接口而不是抽象类来实现,而无需定义任何功能。
使用该接口,我们可以创建 SMS
和 Email
这两个通知器。
SMS
通知器在 SMS.php
文件中如下所示:
Unresolved include directive in modules/ROOT/pages/ch03/ch3-02.adoc - include::example$/Chapter 3/SimpleFactory/SMS.php[]
同样,让我们在 Email.php
文件中放置电子邮件通知程序:
Unresolved include directive in modules/ROOT/pages/ch03/ch3-02.adoc - include::example$/Chapter 3/SimpleFactory/Email.php[]
我们可以按如下方式建造我们的工厂:
Unresolved include directive in modules/ROOT/pages/ch03/ch3-02.adoc - include::example$/Chapter 3/SimpleFactory/NotifierFactory.php[]
虽然我们通常会使用 Composer 进行自动加载,但为了演示这种方法的简便性,我将手动加入依赖项;所以话不多说,下面就是我们的演示:
Unresolved include directive in modules/ROOT/pages/ch03/ch3-02.adoc - include::example$/Chapter 3/SimpleFactory/index.php[]
我们应该得到这样的输出:
