clean 架构是一种"分层架构",源代码依赖只能由外部指向内部,内部圈子里人是不知道外部圈子的任何东西的。
特别是声明在外部圈子中的类、函数、变量或者其他软件实体。
Entities: 表示具体的业务规则
Use Cases: 该层包含应用程序特定的业务规则,它封装并实现了系统的所有用例。这些用例
决定着实体中数据的流动。 这一层的变动不应该影响到实体,同时也不应该受到外层的影响。
Presenters: 在这一层,数据从对实体和用例最方便的形式转换为方便外部 UI 的格式。我们通常
使用 MVC 、MVP、MVVM 等 UI 框架。
在 Android 中应用
为保持业务规则对外部世界一无所知来实现关注点分离,以便在不依赖与外部元素的情况下进行测试,
建议将项目分为 3 个不同的层次,每次层次都有自己的目的,与其他层分开工作。每个层都使用自己的
数据模型,因此可以实现这种独立性。
Presentation Layer
进行业务视图的渲染,View 与 动画在这里进行交互。可以使用 MVP 或 MVVM 来实现
Domain Layer
所有的业务逻辑发生在这一层,所有的交互(用例)在这里进行实现。该层是一个纯 Java 模块,将不依赖
任何 android 的东西。
Data Layer
应用程序所需要的数据全部来自这一层,比方说通过 id 从网络获取用户的信息。
优点:
- Independent of Frameworks. 独立于框架
- Testable. 可测试的
- Independent of UI. 独立于用户界面
- Independent of Database. 独立于数据库
- Independent of any external agency. 独立于任何外部机构
网友评论