Подтвердить что ты не робот

Когда я вызываю своего контроллера класса, менеджера или службы?

Возможно, это очевидно для вас. Я новичок в java (полгода работы), и у меня была дискуссия с моими коллегами. У меня проблемы с именами моих классов в соответствии с их обязанностями. Для этого мои классы набирают обязанности, которых у них никогда не должно быть.

Можете ли вы мне помочь?

BTW: Я работаю в проекте, где мне нужно использовать слой persistance из классов обслуживания. Я разделил свои пакеты на модель, сервис и настойчивость.

4b9b3361

Ответ 1

Существуют определенные шаблоны и рекомендации, лежащие в основе этого термина, в котором я обычно основываю его на:

Контроллер основан на шаблоне Model-View-Controller design и должен использоваться явно для классов, реализующих функциональные возможности контроллера по этой схеме проектирования. Например. если вы используете Spring MVC и вы распространяетесь из одного из классов контроллера.

Сервис немного менее специфичен, но я рекомендую использовать реализацию на уровне сервиса из Шаблоны архитектуры корпоративных приложений". В основном, когда контроллер более специфичен для платформы (например, перенос через HTTP и визуализация Hypertext, обычно HTML для веб-контроллеров), службе не нужно знать, кто ее использует и как. Вы просто предоставляете единый интерфейс, который может быть использован в свою очередь, например, веб-контроллер.

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

Ответ 2

Для соглашения об именах, пожалуйста, прочитайте официальный convention.

Менеджер. Как видно из названия, которое управляет вещами в вашем коде, например EntityManager, оно управляет Entities, TransactionManager - управляет транзакцией. Таким образом, вы можете иметь что-то, называемое SecurityManager, которое управляет тем, какой Algo использовать для шифрования e.t.c

Контроллер. Опять же, имя говорит много, контролирует, как это должно быть сделано, или как это сделать. Напр. ActionController - заботится о том, что делать при получении события действия пользователя

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

Код упаковки требует много размышлений, ваша упаковка приложений должна всегда соответствовать бизнес-модели, на которую она питается.

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

Ответ 3

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

Ответ 4

Я не знаю, был ли я когда-либо назван менеджером классов, поэтому я оставлю это.

Для меня контроллер - это что-то, что контролирует или решает, где должно что-то (сигнал, сообщение,..) идти.

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