KangKyung / ios-market

Application Of E-Commerce
0 stars 0 forks source link

중복되는 모델요소 프로토콜로 분리 #8

Open KangKyung opened 3 years ago

KangKyung commented 3 years ago

발단

분리 기준

전체 공통

response

request

List Model을 뺀 나머지

KangKyung commented 3 years ago

상품 등록과 수정 모델의 경우, 모두 같은데 타입이 옵셔널인 것만 다름

protocol로 공통되는 부분을 빼려고 시도 중 associatedtype 을 사용해서 그냥 타입과 옵셔널 타입을 모두 커버하는방법 검토

KangKyung commented 3 years ago

활용방안 검토

protocol Stringable { }
extension String: Stringable { }
extension Optional: Stringable where Wrapped == String { }

protocol Test {
    var text: Stringable { get set }
}
struct Test1: Test {
    var text: Stringable = "test1"
}
struct Test2: Test {
    static let optionalText = Optional.some("test2")
    var text: Stringable = optionalText
}

print(Test1().text) // "test1\n"
print(Test2().text) // "Optional("test2")\n"