java - 我如何组织和减少申请中的类(class)数量

标签 java android oop design-patterns

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

最佳答案

只是一些建议,以我的拙见...

  • 减少类(class)数量本身不应该成为一个目标。
  • 看起来相同的多段代码实际上可能在逻辑上执行不同的操作,并且将来可能以非常不同的方式演变 ( DRY is about knowledge, not code )。
  • 始终使用 SOLID 进行设计请记住,当您说“我可以使用一个类并传递命令或 api”时,这对于单一职责和开闭原则来说听起来更糟糕。

话虽如此,如果有一些代码看起来(并且实际上)相同,请尝试将它们分解到注入(inject)类中的服务中。只是不要尝试通过将所有看起来相似的代码放在带有一些参数和一些 if-else/switch block 的类/方法中来降低复杂性,因为从长远来看,这通常比拥有很多小而有组织的类(class)。

关于java - 我如何组织和减少申请中的类(class)数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56350039/

相关文章:

java - Spring AOP 中代理的使用

java - JSlider 没有更新?

安卓 : views not appearing in toolbar

oop - 面向对象编程和响应式(Reactive)编程的区别

java - Spring Boot 光配置

java - ScheduledExecutorService 等待任务完成

android - FirebaseFirestore 已经启动,无法再更改其设置

Android 应用程序使用 css 实现页面的通用 View

c++ - 在通过构造函数传递变量的对象中创建对象

java - 为什么忽略接口(interface)隔离原则可能会成为客户端类之间连接的原因?