2017-02-24 65 views
0

假設我有一個像stackoverflow這樣的假設付費應用程序。該應用程序允許用戶做兩件事情:設計用於管理應用程序中服務的付費訂閱?

  1. 發帖提問
  2. 後一個答案

此申請費$ 20買它允許發佈10個問題和10名回答的計劃。

從技術上講,這兩個動作是通過完全不同的接口

interface Questions { 
    postQuestion(String question); 
} 

interface Answers { 
    postAnswer(int questionId, String answer); 
} 

這兩個服務是一種通過網絡訪問,通過不同的控制器暴露。我需要跟蹤用戶發佈的問題和答案的數量,以便在達到限制時讓他們購買新的產品,而不必將此任務委託給服務。

例如在Java中,我需要類似像Map<Method,Integer>這樣的地圖,它跟蹤每個允許的方法被成功調用的次數。並且,通過攔截對這些服務的呼叫來維護這張地圖。該地圖還需要數據庫存儲。

謝謝!

回答

1

在您的客戶數據庫中,您可以添加一個answerCounter和一個questionCounter

當客戶註冊的設置這些值至10

每次服務被稱爲第一檢查如果顧客被允許通過檢查調用它,如果answerCounterquestionCounter或(取決於請求)高於0 。

如果客戶允許張貼的答案/問題再經1

遞減answerCounterquestionCounter如果客戶支付了新包裝由或增加這些值10

+0

謝謝,它要求每個服務檢查他們的方法是否可以被調用。有了許多不同的服務,它很難讓每個服務都爲自己做檢查。由於這也是一種'交叉切割'的問題,因此我想以某種方式攔截呼叫,並且我可以配置哪些方法需要攔截。那有意義嗎? –

+0

如果你有很多調用,那麼你可以創建2個併發的HashMap(每個計數器一個)。當客戶連接加載地圖中的當前值時。當他的會話結束時保存數據庫中的值。在客戶旅程中,數據庫不會被使用,只有您的地圖。 –