今回はIteratorパターンについて書いていきます。
デザインパターンとは
デザインパターンとはソフトウェア開発の設計方法の事です。
『オブジェクト指向における再利用のためのデザインパターン』という本が出典で、全部で23種類のパターンが紹介されています。
Iterator パターンとは
Iterator パターンは繰り返しに関するパターンです。
リストを表す全てのデータにhasNext
とnext
メソッドを付ける事で全てのデータを同じように扱う事ができます。
SwiftでのIterator パターンの実装方法
SwiftでのIterator パターンは下のように記述します。
Iteratorプロトコルに準拠したリストクラスを定義し、whileでリストのデータを順番に表示しています。
protocol Iterator { func hasNext() -> Bool func next() -> NSObject } class List: Iterator { var index = 0 let data: [String] = ["データ1", "データ2", "データ3"] func hasNext() -> Bool { return index < data.count } func next() -> NSObject { return data[index++] } } let list = List() while list.hasNext() { print(list.next()) }
上だけならfor in
でも実現する事ができます。
Iteratorパターンが活きてくるのは下のように特殊なリストです。
下ではnext()
でデータが無作為に取得できます。
これもIteratorプロトコルに準拠しているため上のListと同じように扱う事ができます。
class RandomList: Iterator { var index = 0 var data: [String] = ["データ1", "データ2", "データ3"] func hasNext() -> Bool { return 1 <= data.count } func next() -> NSObject { let index = Int(arc4random()) % data.count let datum = data[index] data.removeAtIndex(index) return datum } } let list = List() while list.hasNext() { print(list.next()) }
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (210件) を見る