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?

  1. It's an improvement over MVC ("Massive View Controller")
  2. Implemented in ABB (by Salsita)
  3. Supports cross-platform development ie (iOS/macOS)
  4. Allows for "UI testing without a UI"
  5. Views can be "reactive" without dependence on shared mutable state
  6. 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:3 Changed on 03/05/2018 at 12:49:35 AM by dzhang

  • Description modified (diff)

comment:4 Changed on 03/05/2018 at 12:49:43 AM by dzhang

  • Milestone Adblock-Plus-for-iOS-next deleted

Add Comment

Modify Ticket

Change Properties
Action
as new .
as The resolution will be set. Next status will be 'closed'.
to The owner will be changed from dzhang.
Next status will be 'reviewing'.
 
Note: See TracTickets for help on using tickets.