2012-03-20 63 views
2

我想弄清楚什麼是最好的設計,我可以去爲以下問題。我的手機上有一個客戶端,可以連接到互聯網。當連接出現異常時,我想向用戶顯示信息彈出窗口。建築設計困境。什麼是最好的設計?

我有一個類查詢手機,看看是否安裝了SIM卡,信號電平,手機是否連接到wifi,WiFi上的信號強度以及設置是否正確配置。

我想封裝這個類,因爲它應該做的只是查詢手機的各種狀態。我應該返回一個包含各種標誌的字節,並讓調用者弄清楚如何處理這些標誌?我應該告訴調用者顯示哪種類型的錯誤信息?我是否應該爲每個狀態設置一個標誌併爲他們設置獲得者?還是有更好的設計可以想到?

+0

保留您的代碼[DRY](http://www.solidsyntaxprogrammer.com/dont-repeat-yourself/)。你可能想考慮把這個功能分成幾個類,因爲你的一類模型看起來會很快失去控制 – 2012-03-20 21:19:13

回答

1

一般的經驗法則是任何你可以有程序你應該做的事情。這也就意味着對於這樣的設計,你的狀態將需要被映射到像一個枚舉如下:

enum Statuses 
    { 
     NO_CONNECTION("no connection", NO_WIFI("no wifi"), 
     ALL_GOOD("Everything is fine") ; //etc 
    } 

Phone類會想看看是這樣的:

class Phone 
{ 
    Statuses currentStatus; 
    Signal currentWifiSignal; 
    Signal currentRadioSignal; 
    boolean isSimInserted; 
} 

Signal類將持有用於確定連接強度和其他屬性的邏輯(這些屬性都不是我所肯定的)。

在使用過程中,您將查詢Phone對象,並在出現異常的情況下,您將返回到調用一個Phone對象反映當前狀態,這反過來將允許在getter一個簡單的調用來驗證當前的狀態。