Opened on 10/07/2017 at 01:52:59 AM
Last modified on 03/05/2018 at 12:49:43 AM
#5843 new change
Proposal: Implement MVVM Architecture
| Reported by: | dzhang | Assignee: | dzhang | 
|---|---|---|---|
| Priority: | Unknown | Milestone: | |
| Module: | Adblock-Plus-for-iOS/macOS | Keywords: | |
| Cc: | Blocked By: | ||
| Blocking: | Platform: | iOS | |
| Ready: | yes | Confidential: | no | 
| Tester: | Unknown | Verified working: | no | 
| Review URL(s): | |||
Description (last modified by dzhang)
This is an umbrella issue that covers multiple issues related to the  implementation of MVVM architecture for ABP.
Background
Why MVVM?
- It's an improvement over MVC ("Massive View Controller")
 - Implemented in ABB (by Salsita)
 - Supports cross-platform development ie (iOS/macOS)
 - Allows for "UI testing without a UI"
 - Views can be "reactive" without dependence on shared mutable state
 - Results in less code with clearer structure
 
What is a ViewModel?
It's a class that provides functions for the input and output of a view. It is independent of UI dependencies ie (UIKit/AppKit).
Where do view controllers fit in?
View controllers present Views using a View Model to handle input/output.
How is MVVM implemented?
Using RxSwift.
What to change
Implement MVVM according to individual issues describing specific implementation contexts.
Implementation History
- #6409 GDPR compliance for Adblock Plus for iOS
 
Attachments (0)
Change History (4)
comment:1 Changed on 10/14/2017 at 03:06:55 AM by dzhang
- Priority changed from Unknown to P3
 
comment:2 Changed on 03/01/2018 at 03:24:17 AM by dzhang
- Cc fhd mario tpregueiro ashephard CraftyDeano removed
 - Owner set to dzhang
 - Priority changed from P3 to Unknown
 
comment:4 Changed on 03/05/2018 at 12:49:43 AM by dzhang
- Milestone Adblock-Plus-for-iOS-next deleted
 
Note: See
        TracTickets for help on using
        tickets.
    