swiftでデザインパターンを実装(Adapterパターン:継承)
今回はAdapterパターンを実装します
- Adapterパターンとは?
既存のクラスに対して修正を加えることなく、インタフェースを変更することができる。
Adapterパターンは「継承」と「委譲」の2つの手法で実現できます。
今回は「継承」を用いた手法を実装してみます。
案件
登場人物
- Adaptee(MizukiNana)
- 水樹奈々さん。既存のクラス。
今までどおり歌って、演技をしていきたい。
- 水樹奈々さん。既存のクラス。
- Target(KohakuProtocol)
- 紅白歌合戦に出場するために実装しなければならないinterface。
kohaku()
が定義されている。
- 紅白歌合戦に出場するために実装しなければならないinterface。
- Adapter(NanaMizuki)
kohaku()
を実装した水樹奈々さん。
実装(Playground)
// Adaptee class MizukiNana { func perform() { print("演技する") } func sing() { print("歌う") } } // Target protocol KohakuProtocol { func kohaku() } // Adapter class KohakuNana: MizukiNana, KohakuProtocol { override func perform() { print("普段の水樹奈々の演技") } func kohaku() { super.sing() } } let nana = KohakuNana() nana.perform() nana.kohaku()
結果
無事、奈々さんは普段通り演技もできて、紅白に出場するためのinterfaceを実装することができた。
感想
今回はkohaku()
の中身がsing()
をラッピングするだけの形になり、ただ単にメソッド名が変わっただけになった。
collaboWithNishikawa()
みたいな他の機能も追加したくなった場合、どう実装していくのか調査していきたいです。