しめ鯖日記

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

Swiftで学ぶデザインパターン7 (Memento パターン)

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

デザインパターンとは

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

Memento パターンとは

Memento パターンはオブジェクトの状態保存に関するパターンです。
現在の状態のインスタンス化・インスタンスを元に状態復元の2つの機能を提供するパターンです。
その機能を活用すれば、状態のロールバック等も使えるようになります。

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

SwiftでのMemento パターンは下のように記述します。
DataManagerの状態をMementoとして生成する事とMementoを元にDataManagerの値をセットすることができるようにしています。

class DataManager {
    var value = 0
    
    func createMemento() -> Memento {
        return Memento(value: value)
    }
    
    func setValueFromMemento(memento: Memento) {
        value = memento.value
    }
    
    class Memento {
        var value = 0
        
        init(value: Int) {
            self.value = value
        }
    }
}

let dataManager = DataManager()
dataManager.value = 2
print(dataManager.value) // → 2
let memento = dataManager.createMemento()
dataManager.value = 4
print(dataManager.value) // → 4
// mementoを元に4をセットする前の状態にロールバック
dataManager.setValueFromMemento(memento)
print(dataManager.value) // → 2

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

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