MVC - Use Case
• https://github.com/HIFILEO/fibonacci/tree/master/app/
src/main/java/com/appsbyleo/fibonacci
Slide 8
Slide 8 text
MVC - Failures
Slide 9
Slide 9 text
MVC - Failures
Slide 10
Slide 10 text
Clean Code
Slide 11
Slide 11 text
Clean Code
• What do I gain by doing this?
• Independent of Frameworks
• Testable
• Independent of UI
• Independent of Database
• Independent of any external agency
Slide 12
Slide 12 text
Inner Most Circle
• Entities
• Enterprises wide business rules
• Business Rules
• Application specific business rules
Slide 13
Slide 13 text
Middle Circle
• Interface Adapters
• Presenters / Views / View Models
• Translation layer
• Garbage In = Garbage Out
Slide 14
Slide 14 text
Outer Circle
• The plugins!
• Frameworks and tools
• The details!
• Though shall do no harm
Slide 15
Slide 15 text
Cross Boundary
• •Flow of control
• In Out In
• Dependencies point inward = Contradiction
• How to resolve = Dependency Inversion Principle
Slide 16
Slide 16 text
Clean Code
Slide 17
Slide 17 text
Dependency Inversion
Principle
• •Definition
• •Rules
• 1.) High-level modules should not depend on low-level
modules. Both should depend on abstractions.
• 2.) Abstraction should not depend on details. Details
should depend on abstractions.
Slide 18
Slide 18 text
Traditional Layers
Slide 19
Slide 19 text
Dependency Inversion
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
Dependency Injection
• •Achieve Dependency Inversion by using Dependency
Injection
Slide 22
Slide 22 text
MVP - Define
Slide 23
Slide 23 text
MVP - Define
Slide 24
Slide 24 text
MVP - Define
Slide 25
Slide 25 text
MVP - History
Slide 26
Slide 26 text
MVP - Use Case
• https://github.com/HIFILEO/MVPExample
Slide 27
Slide 27 text
MVP - Failures
• Major Reasons (Death of MVP)
• Data Binding
• Rx
• Architectural Components
MVVM - History
• Microsoft 2005
• Ken Cooper and Ted Peters
• Need
• To simplify event-driven programming
Slide 34
Slide 34 text
MVVM - Use Cases
• https://github.com/HIFILEO/MVVMReactive
Slide 35
Slide 35 text
MVVM - Failures
Unless you can model your entire
system synchronously, a single
asynchronous source breaks
imperative programming.
Jake Wharton - Managing State with Rx