class A {
var name: String = "A"
}
class B {
var name: String = "B"
}
class C {
var a: A = A()
func printName() {
print(a.name)
}
}
let c = C()
c.printName()
// C는 A를 의존하고 있음
// A의 'name' 이름을 바꾸면
// C 함수에서의 변수명도 바꿔줘야됨
protocol D {
var name: String { get set }
}
class A: D {
var name: String = "A"
}
class B: D {
var name: String = "B"
}
class C {
var a: D
init(a: D) {
self.a = a
}
func printName() {
print(a.name)
}
}
let c = C(a: A()) // A, B가 들어가도 모두 동작,
c.printName() //A, B
// 생상저를 통해서 저장 속성을 외부에다 저장한다.
// 인스턴스를 생성할 때 저장속성에 저장하고 싶은 값을 외부에서 할당 해줌(초기화 = 주입)
class Person {
var name: String
init(name: String) {
self.name = name
}
}
let p1 = Person(name: "문영")
View ↔ Model
서버 Model → 결국 얘는 Entity
→ Number(Struct)
Model(실제 데이터로써 역할을 하는 모델)
→ Date
화면에 보여지기 위한 Model → View용 모델이 필요한거 아닐까 ? → 그래서 ViewModel 탄생
→ String
Entity가 로직에서 취급하는 모델이 되고