4

我有一个 Android 应用程序,它从 Web 源加载数据并显示它。我将这些源支持的每个 API 方法组织在每个源拆分的枚举常量中。假设 SourceA 提供体育和天气数据,SourceB 提供股票和新闻数据。

public enum ServiceA implements ServiceMethod {
    GET_SPORT(...) {...}, 
    GET_WEATHER(...) {...};
    ...
}

public enum ServiceB implements ServiceMethod {
    GET_STOCK(...) {...}, 
    GET_NEWS(...) {...};
    ...
}

每个枚举类也有私有成员来处理服务 API(不同的 API 用于不同的源)

和一个变量ServiceMethod

ServiceMethod method;
... // initializing
String cleanAndFancyData = method.queryData(); // e.g.

不,我需要存储用户历史记录,因此我必须对ServiceMethod变量进行序列化和反序列化,并从实现此接口的所有枚举中枚举所有常量。序列化看起来很简单,毫无疑问。

现在我只是手动迭代枚举:

Collection<ServiceMethod> allMethods = new ArrayList<ServiceMethod>();
allMethods.addAll(EnumSet.allOf(ServiceA.class));
allMethods.addAll(EnumSet.allOf(ServiceB.class));

有没有更清洁、更好的方法呢?还是我的方法完全错误?另外,有什么方法可以确保所有人ServiceMethod都有唯一的名称(在所有枚举中)?

4

1 回答 1

1

您也许可以使用策略模式ServiceAServiceB合并为一个Service.

于 2011-11-18T02:55:28.183 回答