Моя библиотека Java предоставляет интерфейс SomethingClient
с одним классом реализации SomethingClientImpl
.Интерфейс содержит методы, которые будут вызываться приложением, как и следовало ожидать.
Но есть «зеркальный» интерфейс SomethingHandler
, который содержит методы, предоставляемые обратными вызовами приложения - приложения.Вы можете вообразить, что приложение предоставляет библиотеке объект этого интерфейса - возможно, методу Factory, из которого получается SomethingClient
.
Как неопытный Java-дизайнер, Мне интересно знатьесть ли имя для и рекомендуется ли * в какой степени / в какой степени также предоставлять интерфейс и класс, объединяющий обе концепции:
public interface SomethingClient { /*..*/ }
public interface SomethingHandler { /*..*/ }
public interface ClientAndHandler extends SomethingClient,
SomethingHandler { }
public abstract class ClientAndHandler_Impl implements ClientAndHandler {
final SomethingClient clientImpl_;
ClientAndHandler_Impl(SomethingClient clientImpl) {
this.clientImpl_ = clientImpl;
}
// TODO now all SomethingClient methods are implemented in terms of clientImpl_
// AND, SomethingHandler methods are left abstract so they are implemented by the application
}
Предполагается, что разработчик приложения может предпочестьвыход из абстрактного класса ClientAndHandler_Impl
и реализация методов обратного вызова, возможно, с точки зрения клиентских (исходящих) методов.Это можно сделать с относительной легкостью.Предполагая, что вы это сделаете, какое имя вы бы дали концепции ClientAndHandler
?