μμ¦ μ²΄ν μΉ΄μ€ν κ³Ό 둬 리μμΉ λ§€λ ₯μ λΉ μ‘λ€. μ΄κ²λ ν¬μ€ν ν΄λ΄μΌμ§
μ€λ«λ§μ λμμΈ ν¨ν΄ μ μ©νκΈ°!
μ€λμ μ£Όμ λ μ΄λν° ν¨ν΄μ΄λ€.
μ΄λν°μ μλ―Έ
νμ€μμ κ°μ₯ μ΄ν΄νκΈ° μ¬μ΄κ±΄ μμλ λΌμ§μ½μΈλ― νλ€.
ν΄μΈ μ μ μ νμ 110vμΈ κ²½μ°κ° μλ€.
κ·Έλ°λ° μ΄κ²μ κ΅λ΄λ‘ κ°μ Έμμ μ¬μ©νλ €λ©΄ μ½λμ λΌμ§μ½λ₯Ό μ°κ²°ν΄μ€μΌνλ€.
μ΄λ λΌμ§μ½μ μν μ΄ μ€λ ν¬μ€ν μ£Όμ μΈ μ΄λν° ν¨ν΄μ΄λΌκ³ μ΄ν΄νλ©΄ λ κ² κ°λ€.
μ΄λν° ν¨ν΄μ νμμ±
μμ κ°μ μμ λ μ΄ν΄νκΈ° μ°Έ μ½λ€.
νμ§λ§ μ½λλ‘ μ μ©νλ €λ©΄ μ΄μ©μ§ λΌλ μκ°μ΄ λ§μ΄ λ€μλ€.
λλ¦ μ΄μ¬ν κ³ μ¬ν΄μ λμ¨ μμ λ λ€μκ³Ό κ°λ€.
μ£Όμ λ μ¬λ μ§μκΈμ΄λ€.
κΈ°μ‘΄ μΉ΄λμ¬μμ λμ μ°κ³ λλ©΄ λ¨κΈ°λ κΈ°λ‘ ννκ° μμ κ²μ΄λ€.
class UsedInfo {
var userName: String
var id: Int
var usedDate: Date
var usedPrice: Double
init(userName: String, id: Int, usedDate: Date, usedPrice: Double) {
self.userName = userName
self.id = id
self.usedDate = usedDate
self.usedPrice = usedPrice
}
}
κ·Έλ°λ°, μ λΆμμ μ§μμ νμΌλ―λ‘ κ·Έμ λ§κ² κΈ°λ‘μ λ¨κΈ°λ μ΄λ€ μ²λ¦¬λ₯Ό νλκ°μ
κ·Έμ λ§λ λ§μΆ€ν κ°μ²΄λ₯Ό λ°λ‘ λ§λ€μ΄λλκ² μ¬λ¬λͺ¨λ‘ νΈν κ²μ΄λ€.
κ·Όλ° κ³ λ§κ²λ μλμ²λΌ ννλ₯Ό μ§μ ν΄μ€¬λ€.
protocol GovUsedInfoAvailable {
var name: String { get }
var id: Int { get }
var date: String { get } // yyyy.MM.dd
var price: Int { get }
}
κ·Έλ°λ°, νλ‘νΌν°μ μλ―Έμ μΌλ‘ κ°μΌλ, μ΄λ¦μ΄ μ‘°κΈμ© λ€λ₯΄κ³ , μλ£ν λν λ€λ₯΄λ€.
κ°λ¨νκ² μκ°νλ©΄, μ΄ νλ‘ν μ½
μ μ μ©ν΄λ²λ¦¬λ©΄ κ·Έλ§μ΄λ€.
νμ§λ§, κ·Έλ¬μ κ²½μ° λ€μκ³Ό κ°μ λ¬Έμ κ° μκΈ΄λ€.
UsedInfo
μ κ°μ²΄μ μ½λκ° λμ΄λλ€.
getter
λ‘ λ§λ€λ©΄ λμ§λ§ μ΄μ κ°μ λ°©μμ μ΄μ©νκ² λλ€λ©΄, λ λ€λ₯Έ μ΄λκ°μ νμ
μ ν λλ
νλ‘ν μ½μ μ μ©ν΄λ²λ¦¬κ² μ§?
κ·Έλ λ΄ μΌλ§λ μ§μ λΆν΄μ§μ§λ κ°μΈμ νλ¨μ λ§‘κΈ°κ² λ€.
UsedInfo
μ κ°μ²΄μ μν₯μ λΌμΉλ€.
λ―Έκ΄μλ λ³λ‘μ§λ§, λ§μ νλ μ΄ νλ‘ν μ½μ λ°λ₯΄λ μ΄λ€ κ°μ μ λΆμ κ΄λ ¨λ μ½λ μΈμμ μ¨λ²λ¦°λ€?
κ·Έλ¬μ κ²½μ° λ~μ€μ μ λΆμ νμ μ΄ λλμ νμ μμ΄μ§ κ²½μ°, μ λΆμ μΌν μ½λ λΆλΆ μΈμλ λ€λ₯Έ κ³³λ μμ λ΄μΌνλ€.
μ΄ νμλ₯Ό λΌμ§μ½λ‘ λΉμ ν΄λ³΄μ μκ°ν΄λ³΄μ.
μ°κ³ μ νλ μ μ μ νμ λΆν΄ν΄μ μνλ ννλ‘ λ°κΎΈκ³ λ€μ μ¬μ‘°λ¦½νλ 격μ΄λ€.
λΌμ§μ½μ μ₯μ μ 무μμΈκ°?
220vμ νμνκ³³μμλ§ λΌμ°κ³ , νμ μμ΄μ§λ©΄ λΉΌλ©΄ κ·Έλ§μ΄λ€.
κΈ°μ‘΄ μ νμ μ ν μν₯μ μ£Όμ§ μλλ€.
λ§μ°¬κ°μ§λ‘ μ΄λν° ν¨ν΄μ μ°λ €λ μ΄μ λ
κΈ°μ‘΄ κ°μ²΄μ μν₯μ μ£Όμ§ μμΌλ©΄μ, λ€λ₯Έ κ³³μ μ΄μ©μ νλ κ²μ΄λΌ μκ°νλ€.
Adapter Pattern μ¬μ©
μ΄λν° ν¨ν΄μ μ¬μ©ν΄λ³΄μ
κΈ°μ‘΄ UsedInfo
λ κ°μ²΄λ₯Ό μ΄κΈ°ν μΈμλ₯Ό λ°λ μλ‘μ΄ κ°μ²΄ UsedInfoForGov
λ₯Ό λ§λ€μ.
class UsedInfoForGov: GovUsedInfoAvailable {
// 0. κΈ°μ‘΄ κ°μ²΄λ₯Ό λ°λ μ§μ μ΄κΈ°ν ꡬ문
init(usedInfo: UsedInfo) {
self.usedInfo = usedInfo
}
// 1. νλ‘ν μ½ κ·μ½μ λ°λ₯Έ νλ‘νΌν°λ€
var name: String { return usedInfo.userName }
var id: Int { return usedInfo.id}
var date: String { return formatter.string(from: usedInfo.usedDate) }
var price: Int { return Int(usedInfo.usedPrice) }
// 2. κΈ°μ‘΄ κ°μ²΄λ₯Ό λ°λ νλ‘νΌν°
private var usedInfo: UsedInfo
// 3. λ μ§ ν λ³νμ μν νλ‘νΌν°
private lazy var formatter: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy.MM.dd"
return formatter
}()
}
λ΄μ©μ μ λ§ κ°λ¨νλ€.
GovUsedInfoAvailable
νλ‘ν μ½μ μ€μνλ€.- μ£Όμ
0
- κΈ°μ‘΄ κ°μ²΄λ₯Ό λ°λλ€ - μ£Όμ
1
- μ λΆ μμ²λλ‘ νμν κ·κ²©μ λ°λ₯΄λ©° μ λΆgetter
λ‘λ§ κ΅¬νν¨μΌλ‘μ¨ νμμ λ€λ₯Έ μ°μ°μ΄ λ€μ΄ κ° μ μλ€. - μ£Όμ
2
- κΈ°μ‘΄ κ°μ²΄λ₯Ό λ΄λ νλ‘νΌν° - μ£Όμ
3
-date
μμ μ°μΌDateFormatter
μ΄λ€. μμ² μ¬ν ννκ°yyyy.MM.dd
μμ΄μ κ·Έλ λ€!
λ€μ νλ² μ₯μ μ λ§νμλ©΄,
μλ³Έ κ°μ²΄λ₯Ό μ ν μμ μν€μ§ μλλ€. μ΄ λΆλΆλ§ λ²λ €λ 무방νλ€. μ¦, μ μ§λ³΄μκ° μ¬μμ§λ€.
λ!