如何组织和减少应用程序中的课程数量

时间:2019-05-28 21:05:19

标签: java android oop design-patterns

我想这更多是设计模式问题,而不是编码问题。所以我们开始...我有一个包含许多类和活动的android应用程序。我根据其功能将类分组在目录内,例如:AsyncTask目录内的DownloadTask,ScanTask。然后,我将所有所有活动都放在活动目录中,依此类推。但是我注意到很多代码都重复了。例如,我有3个活动PingActivity,NetstatActivity,WhoisActivity,从代码的角度来看,它们基本上是完全相同的。唯一的不同是它们使用的命令,例如:PingActivity的ping主机,NetstatActivity的netstat -ant等等。它们都从看起来非常相似的xml布局实例化视图,因为我所拥有的只是EditText,button和TextView。并且类调用AsyncTask来执行与主线程分离的后台进程。除了WhoisActivity之外,WhoisActivity使用rest api服务来查询域名。所以我的问题是如何简化设计?我可以使用一个单一的类并根据用户选择的菜单选项传递命令或api吗?我怎样才能做到这一点?谢谢

1 个答案:

答案 0 :(得分:1)

只是一些建议,我谦虚地认为 ...

  • 减少类的数量本身绝不是目标。
  • 看似相同的多段代码,实际上可能在逻辑上做不同的事情,并且将来可能以完全不同的方式发展(DRY is about knowledge, not code)。
  • 在设计时始终牢记SOLID,当您说“我可以使用一个单一的类并传递命令或api”时,对于单一职责和开放式封闭原则而言,听起来更糟。

已经说过,如果有一些看起来(实际上是)相等的代码,请尝试将它们分解为注入类中的服务。只是 not 尝试通过将所有看起来相似的代码放入带有一些参数和一些if-else / switch块的类/方法中来降低复杂性,因为从长远来看,这通常比拥有很多小型且有组织的课程。