【发布时间】:2018-02-02 18:55:59
【问题描述】:
我的Command 对象包含required 和optional 信息的组合,用于构造我的domain 对象。
class Command
{
/*
| Required stuff
*/
private $req1;
private $req2;
/*
| Optional stuff
*/
private $opt1;
private $opt2;
private $opt4;
private function __construct($req1, $req1, $opt1, $opt2, $opt3)
{
$this->setReq1($req1);
// ...
}
}
对于具有大量参数(必需和/或可选)的对象,您可以使用builder pattern 而不是冗长的构造函数。我可以为我的command 使用builder,但是,我不确定这是正确的方法吗?
builder pattern 在这里是否合适,或者我应该将command 简化为更像DTO(公共属性)并在command handler 中执行validation?还是有其他选择?
【问题讨论】:
-
Builder 是一个相当复杂的模式。你确定它会解决比它带来的更多的问题吗?
-
@JustinasMarozas - 我不知道,所以我的问题。
-
您可以有一个需要使用必需参数的构建器,并让用户只配置可选参数,例如:
Command.builder(req1, req2).opt1("aValue").build()。我喜欢这种方法,因为它强制参数的必要性(如果没有所需的参数,您无法创建构建器)。 -
@rascio - 这就是我目前正在做的事情,这似乎是一种合理的方法。
标签: php design-patterns domain-driven-design cqrs builder-pattern