こちらの記事で記載されている演習内容をSwiftで写経させていただきました。
ざっくりまとめ
- Adapterパターンの使い道は、インタフェースに互換性のないクラス同士を組み合わせることを目的に使用される
- 継承や移譲を用いて、Adapteeのメソッドを呼び出す
クラス図
継承パターン
移譲パターン
// Adaptee
class Taro {
func enjoyWithAllClassmate() {
print("みんなで楽しむ")
}
}
// Target interface
protocol Charperson {
func organizeClass()
}
// 演習1
//class Teacher {
// func main() {
// let chairperson: Charperson = NewTaro()
// chairperson.organizeClass()
// }
//}
// 継承パターン, Adapter
class NewTaro: Taro, Charperson {
func organizeClass() {
enjoyWithAllClassmate()
}
}
// 移譲パターン, Adapter
class Hanako: Charperson {
private let taro: Taro
init() {
self.taro = Taro()
}
func organizeClass() {
taro.enjoyWithAllClassmate()
}
}
// 演習2
class Teacher {
func main() {
let chairperson: Charperson = Hanako()
chairperson.organizeClass()
}
}