java - 架构设计困境。什么是最好的设计?

标签 java design-patterns

<分区>

我正在尝试找出我可以针对以下问题采用的最佳设计。我的手机上有一个客户端可以连接到互联网。当连接出现异常时,我想向用户显示一个信息弹出窗口。

我有一个查询手机的类,以查看是否安装了 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 进行简单调用以验证当前条件。

关于java - 架构设计困境。什么是最好的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9794747/

相关文章:

java - Mockito spy 如何知道它何时进行 spy Activity ?

design-patterns - 使用 "State"设计模式更改状态的最佳方法是什么?

python - 博格设计模式

android - 我想使用 MVP 设计模式为 android 构建手动 camera2 应用程序。如何?

c# - 设计题: How to deal with initialization?

java - aws s3存储桶在存储桶之间复制文件

java - 如果选中某些按钮,则加载不同的场景

java - Android处理程序,不在ui线程中执行post()

java - 在 Matlab 中限制 uitable 中的有效数字。从Java导入的数据

javascript - 模块化模式与原型(prototype) - Nodejs?