2012-02-14 5 views
0

私は次のようにアプリケーションを構築したいと言っています: ユーザーはログインして、いくつかの観察メカニズムを作成できます。ツイッターのハッシュタグを調べるか、毎時いくつかの株をチェックする。Playでユーザー固有のタイプジェネリック動作を実現するにはどうすればよいですか?

  1. たとえば、次のようなユーザーオブジェクトが必要です。ユーザーがログインするための電子メールとパスワードを保存します。
  2. たとえば、次のようなJavaコードが必要です。株式とツイッターの両方でHttpURLConnectionを確立する
  3. これらのサービスのユーザー固有の設定を保存する必要があります。ユーザAは、#1 hashtag1を望んでいるが、User2が科学的目的のために#anotherTag

を望んでいる私はそれらのオブザーバーのすべての組み合わせ(さえずり、株式を、...)が欲しいのではなく、抽象クラス「オブザーバー」を持ちません「TwitterObserver」と「StocksObserver」の両方が拡張されています。

私が直面してる問題はこれです:

私は、例えばすることはできませんよすべてのオブザーバーを選択し(タイプに関係なく)、反復して、変更されているかどうかを確認し、ユーザー固有の動作に反応します。別の言い方をすると、このオブザーバのためのユーザ固有の設定を持つクラスと組み合わせて、一般的な "オブザーバ"クラスを持つことはできません。

この動作をモデル化するためのデザインパターンまたはベストプラクティスはありますか?私はそれがすべて難しいとは信じられない。

私はすべてのヒントに感謝しています!あなたのGenericObserverクラスでみんな

答えて

0

は、特定の種類を収集するために、アプリケーションのジョブを作成いただきありがとうございます:

public class Observer { 
    // common properties and methods 

    public static List<Observer> observers = new ArrayList<Observer>(); 

    public static void respondUserBehavior() { 
    for (Observer observer: observers) { 
     // call each observer to respond to user behavior 
    } 
    } 

    @OnApplicationStart 
    public static class ObserverCollector extends Job<?> { 
    @Override public void doJob() { 
     observers.addAll(play.Play.classLoader.getAssignableClasses(Observer.class)); 
     // or you might want to loop through the list and filter out the abstract classes 
    } 
    } 
} 
+0

OK]をクリックして、例えば反復処理する方法のthats TwitterObserverとStocksObserverではなく、どのようにしてこれらの2つのクラスを各ユーザーごとに異なるようにすることができますか(ユーザー固有)。ユーザーが自分の設定で観察する特定のハッシュタグを設定させておきましょう。今、私が望むのは、TwitterObserverが自身のために作成したすべてのユーザーをチェックすることです。このユーザーに通知します。 したがって、一般的なTwitterObserverをすべてのユーザー固有の設定にアクセスさせるにはどうすればよいですか?私はこれらのユーザ特有のものをDBに保存したいと思います...私はここで失われています – mzumazumx

関連する問題