工厂模式 - 如何避免开关建设?
问题描述:
我用简单的Factory pattern
,看屏幕,请:工厂模式 - 如何避免开关建设?
正如你可以看到我使用开关操作来选择对象,并创建实例。
但是如果有超过100个课程?问题出现了。 如何避免开关施工?使用界面?
答
您可以通过使用变量与类名一起new
关键字,你必须关心的唯一事情就是namespace
避免switch
或if
语句!您的代码必须是这样的:
$className = "YourNamespace\\SomeFactory\\SomeImplementation\\" . $type;
return new $className(new Position());
此外,您还可以检查是否存在类:
if (class_exists($className) === false) {
throw new Exception("Class $className not found.");
}
,之后才是你创造新的实例。
'return new $ type(new Position());'应该可以工作,(但我不知道你是否想这么做) –
你的意思是使用变量作为类名吗? – OPV
可能是另外使用另一种模式或抽象工厂? – OPV