view Create a standalone separate view that the system renders Use RxJava to implement observer pattern Treat system data events the same as app data events
management Fixes circular dependency between Model, View and Presenter with the observer pattern Removes some OOP in favour of reactive functional programming Easy to modularise for reuse Makes mocking events for testing very easy
a composite view Instantiated by us or DI so we have control over constructor arguments Activity displays view using the setContentView() method after injection/instantiation No dependency on the presenter, emit events via Rx observables
Manages all data events from activity such as saved states, intent data, activity for result Simple logic, the odd map or a filter. Does not have complex data processing Can be split multiple classes, Data Model, Navigation, System