2012-02-14 27 views
0

假設我想構建一個應用程序,如下所示: 用戶可以登錄並創建一些觀察機制,例如,查找Twitter的標籤或每小時檢查一些股票。如何在Play中實現用戶特定類型的一般行爲?

  1. 你必須有一個用戶對象,例如,保存用戶登錄的電子郵件和密碼。
  2. 您必須擁有一些Java代碼,例如爲股票和推特建立HttpURLConnection
  3. 您必須保存這些服務的用戶特定設置:例如,用戶A希望#hashtag1但user2的希望#anotherTag

爲了科學目的,我不希望有那些觀察員(嘰嘰喳喳,股票,...),但每一個可能的組合,而有一個抽象類,「觀察家報」說「TwitterObserver」和「StocksObserver」都可以擴展。

我面對的問題是這樣的:

我不能夠選擇所有觀察者(不管類型),迭代它們,檢查是否修改,並對用戶特定的行爲做出反應。換句話說:我不能擁有一個通用的「Observer」類和類爲這個觀察者保存用戶特定設置的類。

是否有任何設計模式或最佳實踐來模擬此行爲?我無法相信這一切都很難。

我很感謝每一個提示!謝謝你們

回答

0

在你GenericObserver類創建一個應用程序的工作,收集特定類型:

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

好的那一種方法,例如遍歷TwitterObserver和StocksObserver,但是我怎麼能讓這兩個類對於每個用戶都有不同的行爲(是用戶特定的)。讓用戶在他的設置中設置一個特定的標籤 - 我現在想要的是對每個有自己創建的TwitterObserver檢查的用戶進行TwitterObserver檢查,例如通知這個用戶。 那麼如何讓通用的TwitterObserver訪問所有用戶特定的設置?我想將這些特定用戶存儲在數據庫中...我迷失在這裏 – mzumazumx 2012-02-14 20:28:05

相關問題