Swiftで遊ぼう! - 529 - Swiftでデザインパターン: Memento(メメント) 6
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
デザイン・パターンとは、OOP(オブジェクト指向プログラミング)作法でアプリケーション開発をする場合、再利用できるコーディングを23パターンにまとめたものです。初心者はプログラミングをする場合、この23パターンを熟知することがOOPプログラミング達人への近道になると信じています。
今日まで取り組んでいたデザイン・パターンプロジェクト
最後のメソッドをコーディングして一旦終了にします。
最後のメソッドはすべてViewControllerに加える3つのメソッドです。アルバムを「add」「delete」そして「undo」です。
まずアルバムデータを加えます。ファサード・パターンでシングルトン・パターンのインスタンスでアルバム管理はしています。詳しい説明は省きます。
func addAlbumAtIndex(album: Album,index: Int) { LibraryAPI.sharedInstance.addAlbum(album, index: index) currentAlbumIndex = index reloadScroller() }
次はアルバムを削除するメソッドです。コードは読めますが、自分でこのコードを書くことができません。何度か繰り返して自分でコーディングする練習をしないといけませんね。
func deleteAlbum() { let deletedAlbum : Album = allAlbums[currentAlbumIndex] let undoAction = (deletedAlbum, currentAlbumIndex) undoStack.insert(undoAction, atIndex: 0) LibraryAPI.sharedInstance.deleteAlbum(currentAlbumIndex) reloadScroller() let barButtonItems = (toolbar.items! as [UIBarButtonItem]) let undoButton : UIBarButtonItem = barButtonItems[0] undoButton.enabled = true if (allAlbums.count == 0) { let trashButton : UIBarButtonItem = barButtonItems[2] trashButton.enabled = false } }
そしてやり直しのメソッド。
func undoAction() { let barButtonItems = toolbar.items! as [UIBarButtonItem] if undoStack.count > 0 { let (deletedAlbum, index) = undoStack.removeAtIndex(0) addAlbumAtIndex(deletedAlbum, index: index) } if undoStack.count == 0 { let undoButton : UIBarButtonItem = barButtonItems[0] undoButton.enabled = false } let trashButton : UIBarButtonItem = barButtonItems[2] trashButton.enabled = true }
これで全てのコーディングが終わりました。これでランさせるとちゃんと動きます。「ゴミ箱」ボタンをクリックすると選択したアルバムが消えて、「undo」ボタンを押すと元に戻ります! ちょっと感動しますね。
これでデザイン・パターンのチュートリアルが終了です。しかし、このチュートリアルで学んだパターンは、Singleton、MVC、Delegation、Protocols、Facade、Observer、Mementoで、ごく一部です。まだ残りのデザインパターンを勉強する必要がありますが、しばらく別のチュートリアルで他のiOSフレームワークの勉強をします。
デザイン・パターンの勉強は深みがあるので面白いですね。
今日はここまで。