オブジェクト設計において、定石となる手法をパターン化したものを デザインパターン といいます。
デザインパターンをきちんと勉強していない人でも、Web のおかげで知らず知らずのうちに使って(コピペして)その恩恵を享受しています。
自分自身パターン概要を一読しただけで、あいまいな使い方をしているものが多く、この際勉強を兼ねて GOF 23 パターンのなかでよく利用するものを Swift3 で記述していきたいと思います。
今回は 構造パターン の Adapter について説明します。
[構造] Adapter パターン
互換性のないインタフェースを持つクラス同士に手を加えず、共通のインタフェースを提供する。
サンプルコード
Adapter.swift
[code]
protocol Target {
func requiredMethod()
}
class Adapter: Adaptee, Target {
func requiredMethod() {
super.methodA()
}
}
[/code]
Adaptee.swift
[code]
class Adaptee {
func methodA() {
print(“Adaptee > func methodA: \(#function)”)
}
}
[/code]
ViewController.swift
[code]
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Adapter().requiredMethod()
}
}
[/code]
実行結果
[code]
Adaptee > func methodA: methodA()
[/code]
まとめ
Objective-C や Swift でおなじみの protocol を利用し、Adaptee クラスを継承することで、Adapter クラスで requiredMethod を実装しています。
次回は 構造パターン の Bridge パターンを説明したいと思います。
この記事がみなさんのお役に立ちましたら、下記「Share it」よりブックマークやSNSで共有していただければ幸いです。