Абстрактная фабрика

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
Chelobaka
Сообщения: 214
Зарегистрирован: 2018.06.01, 09:54

Абстрактная фабрика

Сообщение Chelobaka »

Здравствуйте,

Допустим есть несколько видов посылок: письмо, бандероль, телеграмма. Все объекты от интерфейса ITextContainer.
Для работы с почтой есть класс MailService, BanderolService и т.д.

В каждом из сервисов есть ряд похожих методов.

addText() - добавления текста к созданному письму., телеграмме, бандеролю, может быть несколько текстов.
removeText()
saveStatus() - статусы меняются и каждый новый сохраняется.

В итоге для объекта Письмо есть доп. классы. Mail, MailText, MailHistory, MailStatus (хранит статусы и передается для проверки).

Я хочу сделать 1 абстрактный сервис TextService и что бы не было привязки к объекта Mail, MailText, MailHistory, MailStatus создавать их через абстрактную фабрику MailFactory

Например создание письма. MailFacroty->getContainer() вместо new Mail(). и т.д.
Создание Бандероля: BanderoleFacroty->getContainer() вместо new Banderole(). и т.д.

Можно ли считать что Mail, MailText, MailHistory, MailStatus одного семейства продуктов и им подходит фабрика для создания?
Ответить