不确定如何描述这个肯定,但我想我已经搞清楚了我想在标题中做什么。详细说明一下,我正在寻找一种设计模式,它可以让我实现一种服务,在一种情况下可以同步返回调用的结果,但在另一种情况下,会返回有关如何异步完成调用的详细信息(例如作业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;
}
}
这是一个明智的方式去了解这项任务?感谢您的任何建议。 (这可能是我应该阅读的设计模式书)
整洁,没有听说过那个包,我得看看它。我不确定它在我的场景中会有用,因为我可能会使用Quartz进行“背景”任务。 – 2010-09-29 18:37:22