2015年1月23日金曜日

スマホアプリ開発のための復習 Observerパターン by swift

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

コメントを投稿

Related Posts Plugin for WordPress, Blogger...