工厂模式 - 如何避免开关构造?

时间:2017-09-25 16:11:33

标签: php oop design-patterns

我使用简单Factory pattern,请查看屏幕:

enter image description here

如您所见,我使用switch运算符选择对象并创建实例。

但如果有超过100个课程?问题来了。 如何避免开关构造?使用界面?

1 个答案:

答案 0 :(得分:1)

您可以通过使用带有类名的变量和switch关键字来避免ifnew语句,您唯一需要关注的是namespace!您的代码必须如下所示:

$className = "YourNamespace\\SomeFactory\\SomeImplementation\\" . $type;
return new $className(new Position());

此外,您可以检查是否存在类:

if (class_exists($className) === false) {
    throw new Exception("Class $className not found.");
}

然后才创建新实例。