我正在尝试找出我可以针对以下问题采用的最佳设计。我的手机上有一个客户端可以连接到互联网。当连接出现异常时,我想向用户显示一个信息弹出窗口。
我有一个查询手机的类,以查看是否安装了 SIM 卡、信号强度、手机是否连接到 wifi、wifi 上的信号强度以及设置是否配置正确。
我想封装这个类,这就是它应该做的,只是查询手机的各种状态。我是否应该返回一个包含各种标志的字节并让调用者弄清楚如何处理这些标志?我应该告诉调用者要显示什么类型的错误消息吗?我应该为每个状态设置一个标志并为它们设置 setter/getter 吗?或者您能想到更好的设计吗?
一般的经验法则是您可以让程序做您应该做的任何事情。对于此设计,这意味着您的状态需要映射到如下枚举:
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
对象,如果发生异常,您将向调用者返回一个反射(reflect)当前状态的 Phone
对象,该对象又将允许对 getter
进行简单调用以验证当前条件。