gpt4 book ai didi

php - 使用工厂获取特定对象有什么好处?

转载 作者:行者123 更新时间:2023-12-04 05:26:57 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Lighten a specific aspect of:
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();
}
}

讨论是关于这家工厂的用途。
如果我从不动态定义产品并且总是定义我喜欢从中获得的产品,是否有必要使用这种模式?

最佳答案

工厂的优势在于它们可以解耦代码。上课Foo ,它需要 A 的实例:

class Foo {

public function __construct() {
$a = new A;
}

}

类(class) Foo现在耦合到类 A ,因为它在其源代码中对类名进行了硬编码。您不能提供 A 的替代实现至 Foo如果你想,例如模拟 A在测试中。这里是工厂进来的地方:
class Foo {

public function __construct(ProductFactory $factory) {
$a = $factory->create($factory::PRODUCT_A);
}

}

您现在可以注入(inject)任何类型的 A进入 Foo需要时,您已将这两个类解耦。

这就是工厂的用途。在适当的时候使用它们。如果没有问题耦合 FooA ,给你更多的权力。

关于php - 使用工厂获取特定对象有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13087432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com