for WPF developers
Home Profile Tips 全記事一覧

データではなく操作を保持する

(2016/12/03 0:14:03 created.)

「元に戻す」ということは、操作されたデータを元の状態に戻すということです。例えば string 型の Name プロパティを考えると、

  1. Name = "田中" とする
  2. Name = "佐藤" とする
  3. 元に戻す機能を使う → Name == "田中" になる
  4. やり直し機能を使う → Name == "佐藤" になる
というイメージです。これだけの機能を実現する場合、プロパティ値の新旧の値、つまりデータを保持しておけば良さそうです。

一方、人物情報を表す Person クラスを用いた、List クラスの People プロパティではどのようになるでしょうか。

  1. 田中さんを表す Person クラスのインスタンスを People プロパティに追加する
  2. 佐藤さんを表す Person クラスのインスタンスを People プロパティに追加する
  3. 元に戻す機能を使う → People プロパティから佐藤さんのインスタンスを除外する
  4. やり直し機能を使う → People プロパティに佐藤さんのインスタンスを追加する

田中さんや佐藤さんを表す Person クラスのインスタンスを保持しておくことも必要ですが、元に戻す場合は List.Remove() メソッド、やり直すとき場合は List.Add() メソッドを使うというように、使用するメソッドも保持しておく必要があります。つまり、データを保持するだけでは不十分で、操作を保持しなくてはいけません。