・複数のクラス群からなるサブシステムにアクセスするための、インタフェースを提供する
・異なるサブシステムを単純な操作だけを持った Facade クラスで結び、サブシステム間の独立性を高める事を目的とする
(インタフェースを簡素化する)
・Facade とは、正面という意味
参考URL: Adapter, Facade, Proxy パターンの違いのメモ
class Target {
func printInt(num: Int) {
print(num)
}
func printString(str: String) {
print(str)
}
}
class Facade {
var target: Target!
init(target: Target) {
self.target = target
}
func print(num: Int) {
target.printInt(num)
}
}
var target = Target()
var facade = Facade(target: target)
facade.print(5)
// 実行されるのはTargetのprintInt