Модель домена - моделирование класса шаблона и класса экземпляра?

Я пишу программу, в которой кто-то может настроить электронную почту (Кому, Копия, Тема, Тело и т.д.). Затем они могут настроить различные триггеры, которые вызовут отправку электронного письма с использованием определенной ими настройки.

Как бы это смоделировать? Будет ли у меня класс EmailTemplate, в котором будут храниться настройки электронной почты, а затем и класс EmailMessage, который будет представлять фактический экземпляр отправленного электронного письма?

Чтобы сделать это более применимым для других, которые могут найти этот вопрос, как вы моделируете класс, который используется для создания экземпляра другого класса (правильно ли я это сказал?)?

Есть ли способ лучше? Я слишком усложняю?


person richard    schedule 14.09.2013    source источник


Ответы (3)


Если сообщение никогда не меняется, достаточно EmailTemplate. Если пользователь может изменить фактический адрес электронной почты, вам понадобится EmailMessage. Это кажется очень простым сценарием, по крайней мере, с учетом деталей, которые вы нам рассказали.

Здесь также может помочь TDD, запишите некоторые ожидания в виде тестов и посмотрите, к чему это приведет.

person MikeSW    schedule 14.09.2013
comment
Что ж, пользователь может изменить сообщение в любое время... но я думаю, что мне нужно решить, есть ли какая-то ценность в сохранении истории сообщений. - person richard; 14.09.2013

Помимо того, что уже сказал @MikeSW, вы, кажется, пытаетесь выполнить BDUF. Сначала попробуйте простую версию — тогда будет легче представить, как вы хотели бы, чтобы ваши клиенты использовали ее, а затем редизайн и рефакторинг с использованием небольших шагов (что делает применимым TDD, как отмечает MikeSW).

Что касается вашего вопроса о классе, который создает экземпляры другого класса, вы имеете в виду фабричный шаблон. . И на самом деле, это кажется хорошим подходом к почтовому API. Рассмотрим этот дизайн: http://www.limilabs.com/blog/send-email-with-attachment — так устроено («строитель» — это прозвище «фабрики»).

person BartoszKP    schedule 15.09.2013

Похоже, вы можете использовать любой EmailMessage в качестве шаблона, скопировать его в новый EmailMessage, а затем разрешить пользователю изменять его по мере необходимости.

person Jim L.    schedule 15.09.2013