今回はChain of Responsibilityパターンについて書いていきます。
デザインパターンとは
デザインパターンとはソフトウェア開発の設計方法の事です。
『オブジェクト指向における再利用のためのデザインパターン』という本が出典で、全部で23種類のパターンが紹介されています。
Chain of Responsibilityパターンとは
Chain of Responsibilityパターンとは責任の鎖という意味で、複数オブジェクトに対して処理を投げて処理できるものが見つかれば処理をするというデザインパターンです。 UIKitではViewのタップ時の挙動等で使われています。
SwiftでのChain of Responsibilityパターンの実装方法
Swiftでの実装例は下の通りです。
リーダー・部長・役員の3人がいて、領収書をリーダーに渡してリーダー権限を超えていたら部長承認・それ以上なら役員承認が必要というケースを実装しました。
class Object { var next: Object? = nil var name: String { get { return "" } } let unlimited = 0 func receiveReceipt(amount: Int) { if recognizableAmount() == unlimited || amount < recognizableAmount() { print("\(name)承認") } else { next?.receiveReceipt(amount) } } func recognizableAmount() -> Int { return unlimited } } class Officer: Object { override var name: String { get { return "役員" } } override func recognizableAmount() -> Int { return unlimited } } class Chief: Object { override var name: String { get { return "部長" } } override func recognizableAmount() -> Int { return 1_000_000 } } class Leader: Object { override var name: String { get { return "リーダー" } } override func recognizableAmount() -> Int { return 100_000 } } let leader = Leader() let chief = Chief() let officer = Officer() leader.next = chief chief.next = officer leader.receiveReceipt(1_000_000)
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (210件) を見る