You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**Complexity**| Lower — **Controller** is a thin pass-through | Slightly higher — **ViewModel** adds an extra layer |
53
+
|**Coupling**| Views know both **Controller** and **Model** (e.g., for initial data) |**Views** know only the **ViewModel**|
54
+
|**Testability**| Controller is testable, but **Views** are still tied to **Model** for reads |**ViewModel** is fully testable without GTK; Views are pure UI |
55
+
|**Scalability**| Adding fields requires updating **Model**, **Controller**, and all **Views**| Adding fields requires updating **Model** and **ViewModel**; Views update bindings only |
56
+
|**Observer wiring**| Manual — Container wires each **View** to the **Model**| Self-contained — **Views** register via **ViewModel**; container stays clean|
57
+
|**UI logic leakage**| Risk - Views may call `model_->getData()` directly | Eliminated - Views use `viewModel_->getCurrentText()` only |
0 commit comments