我真的不知道如何称呼这种方法,但问题是-做这样的事情还可以吗?我创建了一个实体Messages
,并在该实体内设置了Connection
。
<?php
class Message {
private $connection;
public function setName();
public function setSubject();
public function send()
{
$this->connection->send($this);
}
}
这似乎违反了单一责任原则。
我有服务Mailer
,它可以创建Message
实体(已经在Connection
内部)。 Mailer
也可以自己发送Message
实体。
有两种选择,我该如何使用;
<?php
// First
$mailer->send($message);
// Second
$message->send();
这不行,我应该只使用第一种方法吗?
答案 0 :(得分:0)
对此的答案在很大程度上取决于您对各个建筑营地(DDD vs an Anemic Domain model)的忠诚程度。如果您是DDD的拥护者,则可能会主张该消息可以发送自身,这将使其能够执行各种操作,例如验证其自身状态,根据发送结果更改该状态等。使用瘦/贫血域模型,您将使消息变得愚蠢,并依靠服务来发送消息。
每条路径都有权衡取舍,您应该弄清楚哪一种最适合您的应用程序并坚持下去。混合它们会使您的应用程序变得一团糟。