Не уверен, как точно описать это, но я думаю, что я свел воедино то, что я хочу сделать в названии.Чтобы уточнить, я ищу шаблон проектирования, который позволил бы мне реализовать службу, которая в одной ситуации возвращала бы результат вызова синхронно, а в другом случае возвращала сведения о том, как выполнить вызов асинхронно (скажем, заданиеID).
Может быть, просто определив проблему следующим образом, ясно, что то, что я пытаюсь сделать, нарушает идею разработки контракта интерфейса.Может быть направлен в совершенно неверном направлении.
Возможно, я думал о чем-то вроде этого:
public class Data {
private int id;
/* getter/setter */
}
public class QueuedData extends Data {
private int jobId;
/* getter/setter */
}
public interface MyService {
public Data fetchData(int id);
}
public class SyncedMyService implements MyService {
private SyncDao syncDao;
public Data fetchData(int id) {
return syncDao.getData(id);
}
}
public class QueuedMyService implements MyService {
private JobQueue queue;
public QueuedData fetchData(int id) {
int jobId = queue.startGetData(id);
QueuedData queuedData = createQueuedDate(jobId);
return queuedData;
}
}
Это разумный способ выполнить эту задачу?Спасибо за любой совет.(вероятно, есть книга по шаблону дизайна, которую я должен читать)