ArchitectureMidMCQ
What is the difference between MVC, MVVM, and MVP?
Test your knowledge:
Explanation & Code
Answer: All three separate concerns between data, UI, and logic — but they differ in how the middle layer connects to the view.
| MVC | MVVM | MVP | |
|---|---|---|---|
| Middle layer | Controller | ViewModel | Presenter |
| View ↔ Logic | Direct (tight coupling) | Data binding | Interface/protocol |
| Testability | Hard | Easy | Easy |
| iOS default | ✅ UIKit default | Popular in SwiftUI | Less common |
MVC (Apple's flavor):
// ViewController does too much — known as "Massive View Controller"
class UserViewController: UIViewController {
func viewDidLoad() {
super.viewDidLoad()
fetchUser() // network call in VC ❌
}
}
MVVM:
// ViewModel handles logic, View just renders
class UserViewModel: ObservableObject {
@Published var displayName = ""
func load() async { displayName = await fetchUser().name }
}
struct UserView: View {
@StateObject var vm = UserViewModel()
var body: some View { Text(vm.displayName).task { await vm.load() } }
}
Rate your understanding: