λͺ¨λ μ½λλ Swiftλ‘ μμ±λμμ΅λλ€.
λ¬Έμ μν©
λ€νΈμν¬ μμ κ°μ΄ λΉμ©μ΄ λ§μ΄ λλ μμ μ ν΅ν΄ μμ±λλ κ°μ²΄λ₯Ό μ¬λ¬ κ° λ§λ€κ³ μΆμ λκ° μλ€. κ°μ²΄λ₯Ό μ¬λ¬ κ° λ§λ€κ² λ€κ³ λμΌν λ€νΈμν¬ μμ μ λ°λ³΅ν΄μ νλ κ²μ λΉμ°ν λΉν¨μ¨μ μ΄λ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μ λΉμ°ν μ°λ¦¬λ μλ μ½λμ κ°μ΄ μ²μ λ§λ€μ΄μ§ μΈμ€ν΄μ€λ₯Ό λ³΅μ¬ ν κ²μ΄λ€.
class Response {
// JSON λ°μ΄ν°μ κ΄λ ¨λ λ©€λ² λ³μλ€...
}
let data = Network().requestAPI("https://127.0.0.1:8080/map/search")
let response = Response(data)
let copy1 = response
let copy2 = response
let copy3 = response
ν΄λμ€μ μΈμ€ν΄μ€λ 볡μ¬ν κ²½μ° μμ 볡μ¬κ° λλ―λ‘ copy1μ λ³κ²½ μ¬νμ΄ ν΄λΉ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νκ³ μλ λͺ¨λ κ³³μ μ μ©λλ€. λ§μ½, copy1μ λ³κ²½μ΄ copy1μμλ§ μ μ©λκ² νκ³ μΆμΌλ©΄, μ¦ κΉμ 볡μ¬λ₯Ό νκ³ μΆμΌλ©΄ μ΄λ»κ² ν κΉ?
νλ‘ν νμ ν¨ν΄
νλ‘ν νμ ν¨ν΄μ μκΈ° μμ μ κΉμ λ³΅μ¬ ν μ μκ² ν΄μ£Όλ λμμΈ ν¨ν΄μ΄λ€.
UML ν΄λμ€ λ€μ΄μ΄κ·Έλ¨

μ½λ μμ
protocol Prototype: AnyObject { // κ΅³μ΄ μΈν°νμ΄μ€λ₯Ό λ§λ€μ§ μμλ λλ€..!
func clone() -> Self
}
class Response: Prototype {
var data: [Int]
init(data: [Int]) {
self.data = data
}
func clone() -> Self {
return Response(data: self.data) as! Self
}
}
let original = Response(data: [1, 2, 3, 4, 5])
let copy1 = original.clone()
let copy2 = original.clone()
let copy3 = original.clone()
π Swiftμμμ νλ‘ν νμ ν¨ν΄
Swiftμμλ κΉμ 볡μ¬κ° κ°λ₯ν κ° νμ μΈμ€ν΄μ€λ₯Ό μμ±νλ Struct κ°λ μ΄ μ‘΄μ¬νλ―λ‘ Swiftμμλ νλ‘ν νμ ν¨ν΄μ νμμ±μ΄ ν¬κ² λ¨μ΄μ§λ€. μΈμ€ν΄μ€μ κΉμ 볡μ¬λ₯Ό μν΄μ νλμ ν¨ν΄κΉμ§ λ§λ€μ΄μ‘λ€λ μ μ λ―Έλ£¨μ΄ λ³΄μ μ΄μ©λ©΄ Swiftμ StructλΌλ κ°λ μ λμ ν μ΄μ μ€ νλκ° λμ§ μμμκΉλΌλ μ¬κ²¬μ μ‘°μ¬μ€λ½κ² λΆνλ³Έλ€ π
'CS > λμμΈ ν¨ν΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[GoF λμμΈ ν¨ν΄] - μ±κΈν€ ν¨ν΄ (0) | 2024.12.02 |
---|---|
[GoF λμμΈ ν¨ν΄] - λΉλ ν¨ν΄ (0) | 2024.11.28 |
[GoF λμμΈ ν¨ν΄] - μΆμ ν©ν 리 λ©μλ ν¨ν΄ (2) | 2024.11.26 |
[GoF λμμΈ ν¨ν΄] - ν©ν 리 λ©μλ ν¨ν΄ (1) | 2024.11.25 |
[GoF λμμΈ ν¨ν΄] - λμμΈ ν¨ν΄μ΄λ? (1) | 2024.11.22 |
λκΈ