2012-11-09 100 views
2

我有一個類Session跟蹤一堆計數器和被保存到數據庫中。我的問題主要是一個一流的設計問題,而不是具體到Android,但我工作的機器人,因爲我要保證寫入到數據庫上主線程不會發生這僅是相關的。類的設計:內螺紋類或外

我考慮的persist()方法,會話寫入一個DB(這可能是潛在的慢,我不是太在意,當它成功是否/)兩種選擇:

&併發執行內部

public class Session() 
{ 
    //.. getters and setters... 

    void persist() 
    { 
     Runnable r = new Runnable(){ 
      // Implement logic in run() with slow 
      // db operations 
     }; 
     ExecutorService executor = getExistingExecutor(); 
     executor.submit(r); 
    } 
} 

併發&執行外

public class Session() 
{ 
    //.. getters and setters... 

    void persist() 
    { 
    // Implement logic in run() with slow 
    // db operations 
    } 
} 

我基本上從對象設計的角度想,什麼是包裝整齊碼,可能是運行緩慢,使得其易於使用的最佳方法?我也很感興趣,如果有分工問題(Session商店價值的會議,但也知道如何堅持自己......我不能決定,如果這很好的OO或過於複雜)。

+0

如何通過返回'Runnable'來控制併發?兩個呼叫者可能最終並行持續,導致各種錯誤。我錯過了什麼嗎? –

+0

是的,我在寫這個問題的時候想到了這個案例,我會去除它,其他兩個案例是主要案例。 –

+0

你是什麼意思由執行外? –

回答

1

在一般情況下,它是很好的設計,以保持對象的持久化了一個對象實施的。您可能(會!)想要更改持久性如何工作而不更改實現。

因此,你應該有一個單獨的對象,它是用於存儲和檢索數據負責。