・インタフェースを変換することにより、インタフェースに互換性がない クラス同士を接続する
・既存のクラスに対して修正を加えることなく、インタフェースを変更することができる
・継承Adapterを利用する場合と委譲を利用する場合がある
参考URL: Adapter, Facade, Proxy パターンの違いのメモ
class Target {
func printInt(num: Int) {
print(num)
}
func printString(str: String) {
print(str)
}
}
class Adapter {
var target: Target!
init(target: Target) {
self.target = target
}
func printInt(num: Int) {
target.printInt(num)
}
func printString(str: String) {
target.printString(str)
}
}
var target = Target()
var adapter = Adapter(target: target)
adapter.printString("abc")
// 実行されるのはTargetのprintString