4

Webソースからデータをロードして表示するAndroidアプリケーションがあります。ソースごとに分割された列挙型定数で、これらのソースがサポートする各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

戦略パターンServiceAを使用して、とServiceBを 1 つのに結合できる場合がありますService

于 2011-11-18T02:55:28.183 に答える