[iOS 8] Swiftでデザインパターン No.3 Adapter – 継承
Adapter
Adapter とは
英単語 Adapt には以下のような意味があります。
- 適合させる
- あてはめる
Adapter パターンは、既存クラスを修正することなく、異なるインタフェースを持たせるためのパターンです。
Adapter パターンには、継承を利用した方法と委譲を利用した方法が存在します。
今回は継承を利用した方法で実装します。
クラス図
ポイント
- Adapter は Adaptee を継承している
- Adapter の requiredMethod() の中身は、スーパークラスの oldMethod() 呼び出し
サンプルコード
Target
protocol Target { func requiredMethod() }
インターフェースはプロトコルとして実装します。
プロトコルの記述はこんな感じです。
Adaptee
class Adaptee { func oldMethod() { println(__FUNCTION__) } }
println(__FUNCTION__) で、メソッド名を出力できます。
Adapter
class Adapter: Adaptee, Target { func requiredMethod() { super.oldMethod() } }
プロトコルの採用は、継承するクラスの後にカンマで区切って記述します。
requiredMethod() の中身は、継承元のクラスが持つ oldMethod() を呼び出しているだけです。
実行
Adapter().requiredMethod()
実行結果
oldMethod()
まとめ
- プロトコルの採用方法は、カンマの後にプロトコル名(スーパークラスが存在しなければコロンのすぐ後)
- __FUNCTION__ マクロはメソッド名を表す
次回は委譲を利用した Adapter パターンを実装します。