1

我正在设计一个框架来管理我们的移动客户端上的某些 api 调用和其他长期运行的任务。我将在一个基本的 java 程序上设计和实现它,然后可以将它传递给客户端开发人员以扩展框架中的类并实现它们的具体类,它们在其中执行特定于上下文的工作。

有一个地方,管理器会向正在等待任务的组件发送通知。现在在AbstractManager我有一个方法称为registerClient(Messenger m)客户端可以将自己注册为侦听器,以便他们可以知道任务何时完成。

现在,如果我想让它保持抽象,我不能说它是一个Messenger对象,每个应用程序和平台可能使用不同的通知实现。我该如何设计它以便registerClient可以以任何方式实现?

4

3 回答 3

5

您可以提供一个接口(例如IMessenger),每个信使对象都需要实现该接口并使其成为参数的类型

registerClient(IMessenger m)

如果您为接口选择了正确的方法(与您现在的大部分方法相同Messenger),您可以提供可以在registerClient()方法中使用的接口的多个实现

于 2012-06-12T15:19:28.173 回答
3

使其通用,因此您的方法将是 registerClient(T messenger)

于 2012-06-12T15:17:13.287 回答
2

创建 API 时,接口泛型是你最好的朋友。当然,您并不确切知道会发生什么,但是通过为用户提供他们必须实现的界面,您可以确定您可以使用他们决定使用的任何具体实现来完成您需要的工作。

于 2012-06-12T15:17:31.210 回答