В настоящее время я работаю над тремя приложениями Vaadin, и мне действительно кажется, что я что-то пропустил. Раньше я работал с Spring MVC, где архитектура ясна и развязана, вы добавляете сервисы к контроллерам и не связываете контроллер с пользовательским интерфейсом и т.д.
Теперь в Ваадине разная история. Поэтому, если есть специалисты Vaadin, позвольте мне задать вам несколько вопросов:
Вопрос 1:
- Можно ли напрямую вводить сервисы (или DAO) в компоненты пользовательского интерфейса?
- Пример. Компонент, ответственный за показ контактов в приложении электронной почты (ContactWidget, на основе VerticalLayout со ссылками), должен отображать контакты. Является ли это нормально для непосредственного вставки contactRepository в этот элемент пользовательского интерфейса?
Вопрос 2:
- Ссылка на основное приложение передается ОГРОМУ количеству компонентов пользовательского интерфейса, потому что множество компонентов пользовательского интерфейса должны получить доступ к некоторым глобальным данным или вызвать глобальные методы в главном классе приложения.
- Пример. У компонента Popup есть кнопка, которая открывает новое окно, которое должно быть дочерним по отношению к главному окну приложения. Поэтому компонент popup должен иметь ссылку на основное приложение.
Вопрос 3:
- Зависимости между компонентами пользовательского интерфейса могут быть довольно дикими. Наверное, здесь нечего делать, но иногда это не похоже, что это окно зависит от этого списка, который зависит от этого всплывающего окна... вы получаете идею, она выглядит тесно связанной со мной.
Я хотел бы узнать как можно больше о хорошем дизайне с Vaadin, прежде чем мой код превратится в Spaghetti, поэтому любые предложения, опыт и лучшие практики будут оценены.