앱의 확장성을 높이고, 협업과 유지 및 보수를 용이하게 하기 위해 앱 구성요소들의 역할과 책임을 분리시키는 것.
아키텍처의 종류
M (Model) : 데이터를 처리
V (View) : UI를 표시
C (Controller) : Model과 View 사이에 데이터를 주고 받을 수 있게 연결하는 인터페이스
특징
특징
특징
<코드예시>
// Model, View, Controller의 분리
// Model
struct User {
let name: String
let age: Int
}
// View
struct User {
let name: String
let age: Int
}
required init?(coder: NSCoder) {
fatalError("초기화가 구현되지 않았습니다.")
}
func displayUser(_ user: User) {
nameLabel.text = user.name
ageLabel.text = "나이: \(user.age)"
}
}
// Controller
class UserController: UIViewController {
private let user: User
private let userView: UserView
init(user: User, userView: UserView) {
self.user = user
self.userView = userView
}
func updateUser(name: String, age: Int) {
let updatedUser = User(name: name, age: age)
userView.displayUser(updatedUser)
}
}
// 사용 예시
let user = User(name: "김도연", age: 31)
let view = UserView(frame: CGRect(x: 0, y: 0, width: 200, height: 100))
let controller = UserController(user: user, userView: view)
controller.updateUser(name: "김철수", age: 32)