Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active August 11, 2016 03:34
Show Gist options
  • Save KentarouKanno/b65c1216c9ed7bbd113f58ed4b5cb9f9 to your computer and use it in GitHub Desktop.
Save KentarouKanno/b65c1216c9ed7bbd113f58ed4b5cb9f9 to your computer and use it in GitHub Desktop.
Adapter

Adapter

・インタフェースを変換することにより、インタフェースに互換性がない クラス同士を接続する
・既存のクラスに対して修正を加えることなく、インタフェースを変更することができる
・継承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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment