Java Android模块和代码组织
假设有人说你的应用程序中必须有这些模块Java Android模块和代码组织,java,android,optimization,module,packages,Java,Android,Optimization,Module,Packages,假设有人说你的应用程序中必须有这些模块 如果用户已经注册,则可以提供用户登录 用户可以发送消息 用户可以注销 他们所说的模块可以说你的应用程序必须具备这些功能,我理解模块是你应用程序的一个组件,你可以独立构建、测试或调试。模块包含应用程序的源代码和资源 我的问题是,如果他们这样说,那么我如何以专业的方式组织我的代码?我是否必须为每项功能制作单独的软件包?或者我必须为每个功能创建单独的模块,我对代码的组织感到困惑。模块可能意味着一些事情,具体取决于上下文。通常,像这样的术语非常模糊。在Java/K
app
˪ ui
˪ SplashActivity
˪ SignInFragment
˪ SignUpFragment
˪ data
˪ db
˪ DatabaseManager
˪ models
[model classes]
˪ api
[classes responsible for network communication]
给你:
-负责ui逻辑的模块/组件(同时还有包)ui
-负责管理有关登录/注册的逻辑。从概念上讲,我们也可以将其称为一个模块。物理上是一个类/文件SplashActivity
-仅负责数据操作的大模块/组件。同样,在同一时间,物理上,一个包数据
-专门负责数据库逻辑的子模块db
todoapp
˪ data
˪ source
˪ Task.java (model)
[...]
˪ tasks
˪ TasksActivity.java
˪ TasksFragment.java
˪ TasksPresenter.java
[...]
如您所见,此布局与我前面介绍的非常相似。数据(模型)逻辑保存在单独的包和UI逻辑中(视图、演示者)。当然,您可以进一步将Presenter和View分开,但是,这是一个非常简单的应用程序,类分离就足够了
如果组件之间有清晰的分离,就像在MVP中一样,很容易独立地为每个组件测试仪器——只需模拟其他组件即可。我再次建议阅读:
模块化描述了如何将一个应用程序拆分为几个独立的部分,并定义了控制这些部分之间通信的API。如果模块之间的所有通信都通过这些API进行,则这些模块称为松耦合。这带来了一些好处,例如(简单地说)
- 易于在模块内进行更改,因为一个模块内部的更改不会影响任何其他模块
- 独立开发、构建和测试每个模块的能力
- …这里装载更多
- 逻辑分离
- 物理分离
- 某种模块化系统,如OSGI或Jigsaw在Java9中生成的任何项目
- 通用重用原则:包中的类一起重用。如果重用包中的一个类,那么就重用了所有类
- 通用的关闭原则:包中的类应该针对相同类型的更改关闭在一起。影响包的更改会影响该包中的所有类,而不会影响其他包
作为一个起点,你可以看看现有的开源Android应用程序,看看是否有共同的模式出现。你也可以看看一个相关的SO问题。但最终,你将最了解你的应用程序的细节,因此,虽然众所周知/广泛使用的结构是一个很好的起点,但随着你自己的应用程序的发展,你可能不得不改变它,在这个阶段,重构工具和测试覆盖率将非常有用。你需要做三件相当简单的事情。它们中的每一个都需要一个视图,有两个实体(用户和消息),并且会有一些或更多的助手类。这听起来好像不到10节课 就像有10份文件一样。你会用10张纸买多少个组织者?如何