この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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 パターンを実装します。