Swift에서 배우는 Factory Method 패턴【Swift Design Pattern】
8679 단어 디자인 패턴SwiftSwift5FactoryMethod
(그림: wikipedia )
특징
생성에 대한 패턴
객체 생성 프로세스를 추상화하고 런타임에 인스턴스화된 객체 유형을 생성합니다.
소스 코드
example
// 通貨の説明
protocol CurrencyDescribing {
var symbol: String { get }
var code: String { get }
}
final class Euro: CurrencyDescribing {
var symbol: String {
return "€"
}
var code: String {
return "EUR"
}
}
final class UnitedStatesDolar: CurrencyDescribing {
var symbol: String {
return "$"
}
var code: String {
return "USD"
}
}
enum Country {
case unitedStates
case spain
case uk
case greece
}
struct CurrencyFactory {
static func currency(for country: Country) -> CurrencyDescribing? {
switch country {
case .spain, .greece:
return Euro()
case .unitedStates:
return UnitedStatesDolar()
default:
return nil
}
}
}
usage
import UIKit
class ViewController: UIViewController {
let noCurrencyCode = "No Currency Code Available"
override func viewDidLoad() {
super.viewDidLoad()
let greece = CurrencyFactory.currency(for: .greece)?.code ?? noCurrencyCode // "EUR"
let spain = CurrencyFactory.currency(for: .spain)?.code ?? noCurrencyCode "EUR"
let unitedStates = CurrencyFactory.currency(for: .unitedStates)?.code ?? noCurrencyCode // "USD"
let uk = CurrencyFactory.currency(for: .uk)?.code ?? noCurrencyCode // "No Currency Code Available"
}
}
샘플 코드
관련 패턴
요약
참고
Reference
이 문제에 관하여(Swift에서 배우는 Factory Method 패턴【Swift Design Pattern】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shuntarou/items/3ad088f9dbea50983aad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)