Для чего нужны getTop () и getNext () (в ServiceLayerDecorator)?
ServiceLayer использует шаблон цепочки ответственности: в тех случаях, когда ваш декоратор не имеет ничего конкретного, он должен делегировать следующему декоратору в цепочке (возвращается getNext
), вызывая тот же метод с теми же аргументами. Если ваш декоратор изменяет аргументы или ему нужно вызвать другой метод, он должен вызвать его на getTop
, чтобы вызов направлялся через все декораторы, а не только после них в цепочке.
Таким образом, вы используете getTop
правильно и безопасно (посмотрите на LocatorServiceLayer от GWT, это именно то, что он делает).
Но ваш код (и код Этьена!) На самом деле можно сделать проще и лучше: просто переопределите createServiceLocator
, чтобы получить экземпляр от вашего инжектора (такой же, как createLocator
).