GoF의 디자인 패턴, 파사드 패턴에 대해 알아본다.
해당 글은, 다음의 코드를 기반으로 이해하는 것이 편리합니다.
// Not using Facade
internal func main() {
let dbms = DBMS()
let cache = Cache()
let name = "wansik"
if let row = cache.get(with: name) {
let message = Message(row: row)
print(message.makeName())
print(message.makeBirthday())
print(message.makeEmail())
} else if let row = dbms.query(name: name) {
cache.put(row: row)
let message = Message(row: row)
print(message.makeName())
print(message.makeBirthday())
print(message.makeEmail())
} else {
print("없는 이름입니다..")
return
}
}
// Using Facade
internal struct Facade {
internal func run(name: String) {
if let row = cache.get(with: name) {
let message = Message(row: row)
print(message.makeName())
print(message.makeBirthday())
print(message.makeEmail())
} else if let row = dbms.query(name: name) {
cache.put(row: row)
let message = Message(row: row)
print(message.makeName())
print(message.makeBirthday())
print(message.makeEmail())
} else {
print("없는 이름입니다..")
return
}
}
private var dbms = DBMS()
private var cache = Cache()
}
internal func main() {
let facade = Facade()
facade.run(name: "wansik")
}
run(name:)
만 호출하면 된다.compile()
메서드 하나만 알면된다.Facade
)DBMS
, Cache
)UILabel
같은 것을 제공하지만,CoreText
와 같은 것으로 되어있다.