Калитка - Инициализация внешнего класса - PullRequest
0 голосов
/ 11 января 2012

id нравится инициализировать мой импортированный класс Client.class, который связывается с бэкэндом, в моем WicketApplicationЯ знаю, что я должен сделать это в моем WebApplication.class (в методе init правильно?).Но как я могу получить этот экземпляр в моих Page.classes?Как я могу с ним общаться?

Спасибо за совет

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Вы можете получить текущее приложение, используя getApplication() или WebApplication.get().Оттуда вы сможете сузить его тип до своей собственной реализации и вызвать метод get для вашего атрибута Client.class.Помните, что Application является общим объектом для всех ваших пользователей, и ваш атрибут Client должен быть потокобезопасным, если вы не хотите, чтобы происходили неприятные вещи ...

0 голосов
/ 12 января 2012

Наименее тесно связанный способ сделать это - использовать Dependency Injection Framework, такой как Google Guice, и добавить экземпляр в ваши компоненты.Кроме того, ответ Седрика Гатея довольно неплохо описывает решение.

Использование DI дает дополнительный бонус - вам не нужно беспокоиться о том, чтобы внедрить другую реализацию для модульных тестов, поскольку вы легко можете определить ее в своемtestmodule.

Вы можете остаться на втором плане, «вставив» свой внешний класс вручную в конструкторы страниц.Это избавит вас от хлопот, связанных с включением новых технологий на этом этапе, не исключая возможности перехода к ним на более позднем этапе.Таким образом, ваши страницы не будут привязаны к конкретной (вашей) реализации WebApplication и могут быть легко протестированы путем предоставления в тестах другого (поддельного) экземпляра вашего внешнего класса.

...