【发布时间】:2015-11-04 05:07:11
【问题描述】:
我从DataMapper 模式中获取了一些线索来创建这样的东西:
class BusinessObjectCreator
{
public function create()
{
//Acquire Data
$number = filter_input(INPUT_POST, "number", FILTER_SANITIZE_INT);
//create and populate object
$object = new Object();
$object->setNumber($number);
return $object;
}
}
//usage:
$objectInstance = (new BusinessObjectCreator())->create();
//examples of usage once created
$objectInstance->someBusinessFunction();
echo $objectInstance->getNumber();
但在我看来,它也像 Factory 模式或 Builder 模式。
它是什么?我的编码是否正确?
目的是用数据创建一个对象实例填充。然后我可以使用创建的对象对数据进行操作。
【问题讨论】:
-
只是一个随意的评论/问题:你为什么不使用依赖注入?换句话说,你为什么不把一个Object传给create方法呢?
-
你的意思是我为什么不在别处创建对象,然后将其传递给
create()函数,(然后填充对象,并返回它)? -
^ 如果我理解正确的话......我可以。它只会使模式不同。我可以在其他地方创建对象并将名称更改为
BusinessObjectPopulator以更好地反映目的。 -
是的,我知道这(将对象作为参数传递或在函数内创建对象)不是您要的。我只是想指出一些可以改进的地方。至于问题本身,这个模式对我来说就像一个工厂,它仍然可以通过让你的类实现接口来改进。
-
你指的是什么样的界面?我不确定我是否理解。此外,我可以通过注入输入源来进一步改进这一点,而不是像现在这样将输入源硬编码到类中。
标签: php design-patterns factory datamapper builder