这是哪种模式? (工厂/生成器/映射器/其他)

时间:2015-08-11 19:56:35

标签: php design-patterns factory datamapper builder

我从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模式。

这是什么?我是否正确编码了?

目的是使用数据创建一个填充的对象实例。然后我可以使用创建的对象对数据进行操作。

1 个答案:

答案 0 :(得分:0)

这看起来像一个工厂方法。命名约定使您认为它是构建器模式,它具有用于构建具体对象的单独对象。您有一个单独的对象,但不像生成器那样设置数据。

我不太熟悉PHP,但为了使它成为构建器模式,您可以为数据创建方法,然后在方法链的末尾调用create()/ build()。

它的创作看起来像这样

$objInstance = (new BusinessObject())->number($number)->create();

由于您只有一个具有创建对象的方法的类,因此该模式属于工厂方法类别。通常在创建对象时有很多潜在的不同配置时使用构建器,因此如果只设置一个数据,则可以坚持使用工厂方法。

Builder Pattern