Как разделить ответственность в приложении? - PullRequest
0 голосов
/ 28 июля 2011

Например, Я хочу разделить интернет-магазин на три части. Пользователь: информация, относящаяся к пользователю, например, они входят в систему. выйти. Связь: отправка электронной почты или рассылка модулей. ShoppingCart: отображение заказа.

Хорошо, эти три модуля - основная функция моего маленького интернет-магазина. Ясно, что пользователь вносит изменения, занимается своими собственными делами, например, пользователь меняет свою фотографию профиля (хорошо, я думаю, что не имеет смысла иметь фотографию профиля пользователя, просто подумайте, что это пример.)

пользователь --- вызов ---> пользователь

Но у меня здесь проблема, когда пользователь выполняет некоторые функции, которые требуют кросс-модульного вызова .... Позвольте мне привести пример, если пользователь потерял пароль, ему нужно использовать метод связи, чтобы отправить ему новый пароль ... Ситуация будет выглядеть примерно так:

user ----call---> communication 

Хуже ситуации использовать все модули, вот ситуация: Пользователь использует график покупок, чтобы иметь дело со своими покупками, после этого он / она делает заказ, а счет использует коммуникационные модули для отправки пользователю.

user ----call---> shoppingCart ---call---> Communication 

Следовательно, каждый модуль не является отдельным, все модули знают друг друга .... Но я не хочу этого делать, например, на этот раз я делаю новое приложение, например, я делюсь видео веб-сайт, который использует только «пользователь» и «общение», мне действительно не нужен «shoppingChart.», а новый видео модуль .....

Это нормально для меня "обновить" мой пользователь и метод связи, чтобы иметь дело с видео модулем, но вопрос в том, если я что-то исправляю, например, метод getFullName делает что-то неправильно, когда мне нужно «обновить» обратно приложение интернет-магазина, мне тоже нужно взять модуль «видео» .....

Что я хочу спросить, как разделить их ответственность и как сделать код более пригодным для повторного использования? Спасибо.

1 Ответ

0 голосов
/ 28 июля 2011

Хорошей практикой является минимизация муфты в вашем приложении, но полное ее удаление не всегда возможно.

Я бы рекомендовал создавать базовые классы User, Communication и ShoppingCart, которые предоставляют только базовые интерфейсы, такие как getFullName()

Затем для каждого приложения напишите отдельные оболочки, которые могут взаимодействовать с вашими базовыми классами. У вас может быть класс OnlineShopping и класс VideoSharing, которые содержат необходимые вам функции, специфичные для каждого приложения.

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

...