помогите поправить код в соответствии с шаблонами проектирования

Пытаюсь научиться применять шаблоны проектирования, но пока все очень плохо, написал небольшой кусочек кода - https://github.com/sergeevpasha/patterntest Подскажите что поправить, где я не правильно рассуждал

Писать весь код тут - очень много, а писать частично - бессмысленно. Не удаляйте плиз сообщение.


Ответы (1 шт):

Автор решения: ArchDemon

Ваш вопрос очень дискуссионный. Далее напишу сугубо личное мнение, не претендующее на полноту и правильность

MailMessenger.php

\Mail::send($email);

Это не всегда очень хорошо т.к. появляется неявная зависимость. Лучше заменять на явную зависимость $mail->send($email);, которую подключать через конструктор класса.

EmailTemplateFactory.php

public function getTemplate(...

Слишком много аргументов у метода. Лучше заменить на fluent интерфейс

switch ($emailableType) {

В данном случае всю эту конструкцию нужно заменить на что-то более автоматизированное. При появлении новых классов вам придётся переписывать этот файл. Что не есть хорошо.

case 'App\Models\Order':

Строковые значения имён классов лучше заменять на \App\Models\Order::class. В случае внезапного рефакторинга поможет избежать ненужных ошибок

OrderEmailTemplate.php

public function __construct(...

Слишком много аргументов в конструкторе. Лучше заменить на fluent интерфейс

→ Ссылка