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.