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 件のコメント:
コメントを投稿