2012-03-20 83 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一个简单的调用来验证当前的状态。