객체지향
객체지향적으로 리팩토링하며 이해해보자
리팩토링 전 코드
상점 코드
import Foundation
class SoiStore {
var money: Int = 0
var name: String = "쏘이네 가게"
var products: [Int: [String: Any]]
init() {
self.money = 0
self.products = {
[
1: ["name": "키보드", "price": 30000],
2: ["name": "모니터", "price": 50000]
]
}()
}
func setMoney(_ money: Int) {
self.money = money
}
func setProducts(_ products: [Int: [String: Any]]) {
self.products = products
}
func getMoney() -> Int {
return self.money
}
func getProducts() -> [Int: [String: Any]] {
return self.products
}
}손님 코드
실행 코드
리팩토링 1 - 추상화
추상화
상점 코드
사용자 코드
실행코드
리팩토링 2 - 캡슐화
Store의 책임 재정의
상점 프로토콜
상점 코드
사용자 코드
실행코드
헷갈렸던 부분
리팩토링 3 - 단일 책임
상점 프로토콜
상점
손님
리팩토링 4 - Product의 객체화
프로토콜
Product 구조체
Store
User
main
Last updated