Использовать соединение внутри сущности - PullRequest
0 голосов
/ 28 ноября 2018

Я не знаю, как назвать этот подход, но вопрос в том, нормально ли делать что-то подобноеЯ создаю сущность 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();

Разве это не нормально, и я должен использовать толькопервый подход?

1 Ответ

0 голосов
/ 28 ноября 2018

Ответ на этот вопрос в значительной степени зависит от того, насколько вы приверженцы различных лагерей архитектуры ( DDD против модели Anemic Domain ).Если вы приверженец DDD, вы, вероятно, выступите за то, чтобы сообщение могло отправляться само по себе, что позволяло бы ему выполнять всевозможные действия, такие как проверка собственного состояния, изменение этого состояния на основе результата отправки и т. Д. Если выиспользуя модель тонкого / анемичного домена, вы сделаете сообщение немым и положитесь на службу для отправки сообщения.

У каждого пути есть компромиссы, вы должны выяснить, какой из них подходит для вашего приложения, и придерживаться его.Их смешивание превращает ваше приложение в беспорядок.

...