【问题标题】:Use Connection inside Entity在实体内使用连接
【发布时间】:2019-04-30 07:25:10
【问题描述】:

我真的不知道如何称呼这种方法,但问题是 - 这样做可以吗?我创建了一个实体 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();

不行,我应该只使用第一种方法吗?

【问题讨论】:

  • 消息不会自己发送。

标签: php oop design-patterns architecture


【解决方案1】:

这个问题的答案在很大程度上取决于您对各个建筑阵营的追随者有多强 (DDD vs an Anemic Domain model)。如果您是 DDD 的拥护者,您可能会主张消息可以自行发送,这将允许它执行各种操作,例如验证自己的状态、根据发送结果更改状态等。如果您是使用瘦/贫血域模型,您会使消息变笨,并依赖服务来发送消息。

每条路径都有权衡,您应该找出适合您的应用程序的路径并坚持下去。混合它们会使您的应用程序变得一团糟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多