【发布时间】:2012-10-26 13:02:03
【问题描述】:
减轻以下特定方面的影响:
Factory Pattern. When to use factory methods?
我的团队曾讨论过工厂设计模式。
在我们的项目中,我们有一些像这样构建的工厂:
class ProductFactory {
const PRODUCT_A = 'product_a';
const PRODUCT_B = 'product_b';
const PRODUCT_C = 'product_c';
private static $classMapping = array(self::PRODUCT_A => 'A',
self::PRODUCT_B => 'B',
self::PRODUCT_C => 'C');
public function create($productConstant) {
$className = self::$classMapping[$productConstant];
return new $className();
}
}
讨论的是关于这个工厂的使用。 如果我从不动态定义产品,总是定义我喜欢从中获取的产品,是否有必要使用这种模式?
【问题讨论】:
-
您可以稍后更改产品的具体内容,而无需更改太多代码。
-
附带说明:如果我没有完全弄错,您不会实例化 ProductFactory。因此,它需要 'create' 作为静态方法 (
public static function create())。 -
@ExternalUse:请不要这样建议。谢谢!您想稍后更换工厂(例如,用于测试系统),然后静态杀死所有这些。不必要的。如果您对自己的判断是公平的,您不会建议使用全局函数,对吗?
标签: php design-patterns factory