(This notes is from watching Clean architecture on Android by Marko Miloš)
- Independent of frameworks
- Independent of UI
- Independent of database / storage
- Independent of any external agency
- Inner layers should not know anything (or use any code) from outer layers
- Change of outer layers should not affect inner layers
Model View Presenter (MVP)
- bind data to view
- scheduling animations / transistions
- propagate user input to presenter
- Activity, Fragment, View
- orchestrate and execute use cases
- prepare / format data for the view
- Dagger 2
Just some POJOs (Can be applied using AutoValue)
Use one entity would cause a super complex entity since it need to talk with database, network, and memory.
Would cause some trouble versioning each module, but putting them in one module:
would cause accidental reference between layers.
Feature changes only happen under package. Class visibility might need to be public sometimes.