Как избавиться от повторяющегося кода? Всем привет! У меня есть класс Attachments и еще несколько классов, которые его наследуют: ImageAttachment и VideoAttachment.
Эти классы используются всеми модулями на сайте: "новости", "посты", "комментарии" и т.д.
Когда я получаю из БД список вложений для какого-то из этих модулей, то мне нужно перебрать массив полученных данных, определить тип вложение и добавить его в список вложений любого из вышеописанных модулей....
Для этого, в каждом классе объектов (новости, посты, комментарии) есть метод addAttachment, который по сути везде одинаковый... Как мне избавиться от его повторения везде?
У меня была мысль создать некий абстрактный класс и все классы (новости, посты, комментарии) наследовать от него... Тогда у меня был бы один метод addAttachment, только в этом абстрактном родительском классе... Но мне кажется глуппо наследовать клас Comments от класса AbstractAttachments.
Надеюсь понятно объяснил... Ведь код приводить бессмысленно - он очень большой

21 Авг 2019 в 06:59
159 +1
0
Ответы
1

Для избавления от повторяющегося кода в методе addAttachment в различных классах (например, новости, посты, комментарии) можно использовать паттерн проектирования - композицию. Вместо того чтобы наследовать классы от родительского класса, вы можете создать отдельный класс, который будет отвечать за работу с вложениями (AttachmentsManager, например) и передавать экземпляр этого класса в конструктор каждого из ваших модулей.

AttachmentsManager может содержать метод addAttachment, который будет принимать массив данных о вложениях и добавлять их в соответствующий модуль (новости, посты, комментарии).

Таким образом, вы избавитесь от повторения кода в методе addAttachment и сможете эффективно управлять вложениями в различных модулях с помощью одного класса.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир