Please enable JavaScript.
Coggle requires JavaScript to display documents.
Android Architecturetext (MVP (model (.data.source (XxxDataSource (CRUD...…
Android
Architecture
text
MVP
model
.data.source
XxxDataSource
CRUD... functions
function callbacks
XxxRepository
.local.XxxLocalDataSource
.remote.XxxRemoteDataSource
view&presenter
Contract
View
BaseView.setPresenter(p)
Presenter
BasePresenter.start()
other
AppExecutors
avoids the effects of task starvation
TEST
不同于原来的 expect-run-verify 测试模式,
mockito 可以直接 run 后 verify 其依赖(不只执行结果,还可 verify 调用方法、执行次数和顺序等等)
目的
分层 -> 架构 -> 关注点分离(separation of concerns)
MPV-Clean
Clean
The Dependency Rule
不一定只四层,但此规则总是适用
越内越抽象
源码依赖仅可内指
分层
Entities
可被多个 app 复用
企业范围业务逻辑
Use Cases
应用范围业务逻辑
修改不影响 Entities,不受外部修改影响;可受 app 操作改变影响
Interface Adapters
内外层数据互转
MVC 存在于该层 :question:
Frameworks & Drivers
同内层通信的少量代码
Crossing boundaries
Dependency Inversion Principle: 逆转控制流(接口+继承)
数据传输以内层为准,不能违反依赖规则
分层
在数据层和展示层中间增加一个领域层
avoid code repetition on presenters
Domain(领域): 所有业务逻辑, use cases or interactors
Google Samples
MVP
clean
MVVM
框架
clear guidelines on how to face common problems
hard to break: 定义层级,清楚描述其间关系,防止错误,简化 CR
Google I/O 2018
Presentation layer(View/ViewModel/Data Binding)
不直接同 data 通信;VM 通过 use cases 获取 repo
Domain layer(use cases)
Data layer(repositories, user manager)