2013-09-28 97 views
0

我正在開發一個多玩家遊戲,它有一個基於服務器發送通知的模塊。例如:其他玩家的動作,分數更新,要做的動作等。android中的通知處理

我正在接收json格式的通知。我想知道是否有存在某些編碼模式,它會自動將不同的通知發送給相應的處理程序。非常感謝您的幫助。

+0

一個簡單的方法是使用廣播,讓每個處理程序監聽適當的意圖,這種方式只選擇那些相關的。出於好奇,你使用GCM還是反覆拉動服務器進行更新? – cYrixmorten

+0

其實大約有3種活動通過通知來控制遊戲,每個活動都會收到5到20個不同的通知。 – Adnan

+0

不,我正在使用信號R. – Adnan

回答

1

嗯,也不能說,如果這歸類爲一個模式:

我就可以拿是簡單地創建一個單獨的類,讓我們把它叫做JSONGameStateFilter,過濾基於接收到的值加狀態的JSON對象遊戲

喜歡的東西的:

public class JSONGameStateFilter() { 

    public interface GameInterface1 { 
     // callback methods for activity 1 
     // example: public void newPlayerArrived(String name, int score); 
     // ... 
    } 

    public interface GameInterface2 { 
     // callback methods for activity 2 
    } 

    public interface GameInterface3 { 
     // callback methods for activity 3 
    } 

    private GameInterface1 callback1; 
    private GameInterface2 callback2; 
    private GameInterface3 callback3; 

    private JSONGameStateFilter instance; 

    public static JSONGameStateFilter getInstance() { 
     if (instance != null) { 
      return instance = new JSONGameStateFilter(); 
     } 
    } 
    private JSONGameStateFilter() {} 

    public void registerListener(GameInterface1 callback) { 
     // called by Activity1 implementing GameInterface1 
     // by JSONGameStateFilter.newInstance().registerListener(this); 
     this.callback1 = callback; 
    } 

    public void registerListener(GameInterface2 callback) { 
     this.callback2 = callback; 
    } 

    public void registerListener(GameInterface3 callback) { 
     this.callback3 = callback; 
    } 

    public void filterJSON(JSONObject object) { 
     // read JSON and gamestate 
     // depending on situation call the right callback 
     // example: if (callback1 != null) callback1.newPlayerArrived(name, score) 
    } 
} 

這種方法的設計將是實現而變化的每個活動(已知圖案爲碎片回通信以活性)的回調。

這是未經測試和剛纔寫的,但我非常有信心它會很好地工作。

+0

謝謝cYrixmorten。我想像設計一樣但有一點點差異。這是關於使用觀察者模式,但有一個HashMap存儲每個觀察員/控制器的關鍵。並且像過濾器一樣使用相同的過濾器,而不是像上面那樣註冊不同的GameInterface,只需使用一個鍵添加每個GameInterface即可。請分享您對此的看法。 – Adnan

+0

這可能表明這條道路不是一個壞主意:)關於觀察者模式,那麼我認爲這是一個品味問題。然而,在我看來,觀察者模式更具通用性,如果有意義的話,任何人都可以註冊觀察者,而在這裏有一組預定義的對象,應該接收定製的信息。我確信這兩種方法都可行。 – cYrixmorten

+0

對..謝謝:) – Adnan