+ All Categories
Home > Documents > MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views...

MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views...

Date post: 21-May-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
44
MVVM und FRP Perfekte Architekturen für mobile Plattformen?
Transcript
Page 1: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

MVVM und FRPPerfekte Architekturen für mobile Plattformen?

Page 2: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Mailingliste: Beispiel-App mit Programmcode und Diskussion

http://dwx2016.nua-schroers.de

Page 3: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

http://www.ma-design.de/bsh-home-connect/

Page 4: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

http://www.ma-design.de/bsh-home-connect/

Page 5: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

http://www.ma-design.de/bsh-home-connect/

Page 6: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Das Streichholzspiel

Page 7: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Animation zumEntfernen

Buttonzustände hängen vom Spielstand ab

Page 8: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 9: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Wer entscheidet, wann der Dialog angezeigt wird?

Page 10: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 11: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 12: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 13: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 14: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Image taken from Wikipedia (CC BY-SA 4.0 license): https://en.wikipedia.org/wiki/Martin_Fowler#/media/File:Webysther_20150414193208_-_Martin_Fowler.jpg

Model-View-PresenterErfunden von Martin Fowler

Page 15: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 16: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Lifecycle-Management

Entscheidungen, Workflow, Zustand des Views

KEINE Referenzen auf/ Instanziierung vonViewController oder Views!

KEINE Referenzen auf Presentation Model!

Page 17: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 18: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 19: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

MainViewController:

MainViewModel:

Page 20: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Vollständige Unit-Testbarkeit!

Page 21: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

–John Gossman, http://blogs.msdn.com/b/johngossman/archive/2006/03/04/543695.aspx

“For simple UI, M-V-VM can be overkill.  In bigger cases, it can be hard to design the ViewModel up front in order to get the right

amount of generality.”

Page 22: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Functional Reactive Programming

Page 23: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Imperative-style Lösung von Project Euler #1 https://projecteuler.net/problem=1

Page 24: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Functional-style

Page 25: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Functional-style

Page 26: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Delegate

Target-Action

ListenersNotification

NotificationCenter

Data sourceKVO

IPropertyChangedListener

IntentURL-responder

Futur

e/pro

mise

Page 27: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Event

Page 28: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

http://conal.net/papers/icfp97/Conal Elliott und Paul Hudak

Page 29: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Finde alle Doppel-Clicks in einem Stream von Events https://gist.github.com/staltz/868e7e9bc2a7b8c1f754

Page 30: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Finde alle Doppel-Clicks in einem Stream von Events https://gist.github.com/staltz/868e7e9bc2a7b8c1f754

stream.throttle(0.25)

.map({ len($0) })

.filter({ $0 > 1})

Page 31: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 32: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 33: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

MainViewModel.swift

MainViewController.swift

Page 34: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 35: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 36: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

MainViewModel.swift

MainViewController.swift

Page 37: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 38: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen
Page 39: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Volle Unit-Testbarkeit!

Page 40: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Verhalten kann auf VM-Ebene geändert werden

Page 41: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Tu und Tu-Nicht

Page 42: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

• CollectionViews, insbesondere Tabellenzellen

• Speicherlecks/Blöcke mit Objective-C

• Zu starke Verwendung von deklarativen Konstrukten (Callbacks within Callbacks within…)

• Größere Komplexität/weniger Unterstützung beim Debugging

• Fundamentalistische Anwendung eines Paradigma

Page 43: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Zusammenfassung

Page 44: MVVM und FRP - nua-schroers.de · Lifecycle-Management Entscheidungen, Workflow, Zustand des Views KEINE Referenzen auf/ Instanziierung von ViewController oder Views! KEINE Referenzen

Referenzen• MVC:

http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

• MVVM:https://github.com/ColinEberhardt/ReactiveTwitterSearch http://www.codeproject.com/Articles/166952/androidbinding.aspx

• FRP:https://gist.github.com/staltz/868e7e9bc2a7b8c1f754 https://gist.github.com/JaviLorbada/4a7bd6129275ebefd5a6 https://github.com/ReactiveCocoa/ReactiveCocoa https://github.com/ReactiveX/RxSwift https://www.raywenderlich.com/126522/reactivecocoa-vs-rxswift https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxClojure https://github.com/Reactive-Extensions/RxCpp https://github.com/ReactiveX/RxPY

• HomeConnect/ma design: http://home-connect.com/de/en/ http://www.ma-design.de/bsh-home-connect/


Recommended