Observerパターンとは?
状態の変化を観察することを目的としたパターンです。
ここ数年、色々なandroidとiphoneの開発(ネイティブアプリ)を手がけましたが、スマホアプリ開発でもっとも利用頻度の高いデザインパターンがObserverパターンだと思います。 webアプリの時はabstract factoryやTemplate Methodをよく利用していましたが、スマホアプリだとObserver, Stateあたりも負けじとよく利用します。
そんなわけで、まずはswiftでObserverパターンの学習です。
環境
- Xcode6.1
Observerパターンのサンプル
class StepCounter { var totalSteps: Int = 0 var inputValue: Int = 0 { willSet { totalSteps = totalSteps + newValue } didSet { // 合計が150を超えたら前回の入力値に戻して、入力値も0に戻す if (totalSteps > 150) { totalSteps = oldValue inputValue = 0 } //println(oldValue) //println("didSet") //totalSteps = oldValue } } } let stepCounter = StepCounter() stepCounter.inputValue = 100 stepCounter.totalSteps // 100 stepCounter.inputValue = 40 stepCounter.totalSteps // 140 stepCounter.inputValue // 40 stepCounter.inputValue = 20 // 150を超えたので、前回の40に戻る stepCounter.totalSteps // 40 // 入力値が0に戻っている stepCounter.inputValue // 0
ポイントは以下
- willSetのあとにdidSetが呼び出される
- willSetはデフォルトでnewValue, didSetはデフォルトでoldValueという変数が利用できる
- プロパティ(この例ならinputValue)には、willSetからはアクセスできない
実際にはmodelで使うケースが多くなりそうです。今後、積極的に使っていこうと思います。実際に利用した時、また詳しく記述します。
以上
0 件のコメント:
コメントを投稿