しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Swiftで学ぶデザインパターン17 (Observerパターン)

今回はObserverパターンについて書いていきます。

デザインパターンとは

デザインパターンとはソフトウェア開発の設計方法の事です。
オブジェクト指向における再利用のためのデザインパターン』という本が出典で、全部で23種類のパターンが紹介されています。

Observerパターンとは

Observerパターンとはオブジェクト同士のメッセージのやり取りに関するデザインパターンです。

このパターンではSubjectObserverという2種類のクラスとそのサブクラスが出てきます。
それぞれのSubjectに対してObserverを追加し、開発者はSubjectnoticeメソッドを呼べば全てのObserverに対してメソッドを送ります。

SwiftでのObserverパターンの実装方法

SwiftでのObserverパターンは下のように実装します。
NSNotificationCenter.defaultCenter()Subjectに相当して、selfObserverにあたります。

func method() {
    NSNotificationCenter.defaultCenter().addObserver(
            self, selector: "methodName", name: "NotificationName", object: nil)

    NSNotificationCenter.defaultCenter().postNotificationName(
            "NotificationName", object: nil)
}

func methodName() {
    print("Called")
}

method()

本来のObserverパターンではObserverは通知受け取りメソッドを持つ共通インターフェイスが必要なのですが、Swiftの場合はObserver登録の際にメソッド名も併せて登録するので共通インターフェイスが不要になっています。
Subjectも本来は通知の種類分必要なのですが、addObserverでキーを指定する事でSubjectNSNotificationCenter.defaultCenter()のみとなっています。

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン