Я работаю над клиентом, который будет генерировать URL-адрес на входах (ключах), переданных клиенту, а затем сделать HTTP-вызов этого URL-адреса. Теперь мне нужно иметь синхронную и асинхронную реализацию этого.Класс асинхронной оболочки вокруг синхронной реализации интерфейса
Я хочу, чтобы время ожидания клиента, если оно занимает больше времени, чем указанный тайм-аут.
Так что я думал создать такой интерфейс, который будет иметь синхронные и асинхронные методы, которые будут принимать некоторые входные параметры, и я напишу класс реализации, который будет реализовывать интерфейс.
public interface Client {
// for synchronous
public String execute(final ClientInput keys);
// for asynchronous
public Future<String> executeAsync(final ClientInput keys);
}
Но я делал некоторые исследования, и я узнал, что лучший способ это -
Вместо двух методов один синхронный и асинхронный другой, есть один метод интерфейса, описывающий синхронное поведение. Напишите для него реализацию. А затем предоставим класс-оболочку, который обертывает реализацию вашего интерфейса, который в основном вызывает метод обернутого объекта, обеспечивая при этом асинхронное поведение.
Но почему-то я не могу понять, как это сделать? Может ли кто-нибудь представить простой пример этого, который поможет мне лучше понять, как это сделать?
Это слишком широкий для здесь, а также основанный на мнениях. Тем не менее, нет необходимости в двух отдельных интерфейсах. Вы бесплатно получаете синхронный разговор о Фьючерсе; вызывая 'Future.get()' блоков, пока операция не завершится. –
@BrianRoach: Я знаю, что это мнение основано, поскольку я упоминаю в своем вопросе. Я ищу асинхронный класс-оболочку вокруг sycnrhonous реализации. Если вы можете предоставить простой пример, это поможет мне лучше понять. – ferhan