Наименее тесно связанный способ сделать это - использовать Dependency Injection Framework, такой как Google Guice, и добавить экземпляр в ваши компоненты.Кроме того, ответ Седрика Гатея довольно неплохо описывает решение.
Использование DI дает дополнительный бонус - вам не нужно беспокоиться о том, чтобы внедрить другую реализацию для модульных тестов, поскольку вы легко можете определить ее в своемtestmodule.
Вы можете остаться на втором плане, «вставив» свой внешний класс вручную в конструкторы страниц.Это избавит вас от хлопот, связанных с включением новых технологий на этом этапе, не исключая возможности перехода к ним на более позднем этапе.Таким образом, ваши страницы не будут привязаны к конкретной (вашей) реализации WebApplication и могут быть легко протестированы путем предоставления в тестах другого (поддельного) экземпляра вашего внешнего класса.