【发布时间】:2017-10-30 13:53:34
【问题描述】:
我的一个朋友告诉我,如果我想成为一名优秀的程序员,那么我需要学习设计模式。我从那个网站开始: https://github.com/kamranahmedse/design-patterns-for-humans
我从简单工厂开始。 正如您在该页面上看到的,您需要实施:
- 界面门
- 木门类
- 类DoorFactory
你可以像这样使用它(PHP):
$door = DoorFactory::makeDoor(100, 200);
echo 'Width: ' . $door->getWidth();
echo 'Height: ' . $door->getHeight();
但我想知道为什么我需要类 DoorFactory 的层,当我可以简单地这样做时,它会为我提供具有给定参数的 WoodDoor 的新实例:
Door door = new WoodenDoor(100, 200);
当我可以通过使用 new ClassName 语句传递给定的构造函数参数来简单地创建实例时,创建该工厂有什么大不了的?
已编辑
说明我可以通过此解决方案轻松管理多次出现的给定元素废除的变化:
创建给定的类(作为工厂解决方案中的给定工厂类型),例如:
类 LongWoodenDoor 扩展了 WoodDoor 类并使用带有给定参数的 WoodDoor 构造函数。例如通过使用 super("100", "200");
【问题讨论】:
-
构造函数与工厂模式:stackoverflow.com/questions/628950/…
-
@BenRoob 我相信您将 工厂模式 与 静态工厂方法... 混淆了
标签: php design-patterns factory-pattern