c# Undo/Redo 関係
こんにちは。c#初心者です。
Undo/Redo機能を実装しようとしていて気になることがあったので質問です。
最初はよくわからなかったので、とりあえず何も見ずに、思いつきでIUndoer, IRedoerを用意してポリモーフィズム全開でやろうとしていました(ちゃんと何か読めよ)。
public interface IUndoer
{
/// <summary>1つ前の状態に戻し、Redoerを生成します。</summary>
/// <returns>Redoer</returns>
IRedoer Undo();
}
public interface IRedoer
{
/// <summary>1つ次の状態に戻し、Undoerを生成します。</summary>
/// <returns>Undoer</returns>
IUndoer Redo();
}
class TextChangeUndoer : IUndoer { // 略 }
class TextChangeRedoer : IRedoer { // 略 }
class PointChangeUndoer : IUndoer { // 略 }
class PointChangeRedoer : IRedoer { // 略 }
・
・
こんな感じで、とりあえずStack<T>に放り込んでやる予定でした。が、途中でよく考えてみれば、対応するUndoerとRedoerは中身が同じだったことに気づきました(遅っ)。
という訳で、上のクラスたちは
class TextChanger : IUndoer, IRedoer { // 略 }
class PointChanger : IUndoer, IRedoer { // 略 }
・
・
こんな感じになりました。ここでクエスチョンです。
一旦は1つにまとめましたが、
A、「UndoとRedoで概念が違うため、元通りに2つのクラスに分けるべき」
B、「そもそもIUndoerとか、IRedoerとか分ける必要がない(端的に言えばIUnRedoerみたいなのでいい)」
C、「今のが良い」
D、「興味ないね」
E、「その前に何か読め」
Z、「その他」
のいずれが好ましいでしょうか? 皆さんのご意見を伺わせてください。
お礼
なんチュー区切り方だ(笑) コレは新しいパターンだ。 もちろんOK。(ホント何でもアリだね) 回答ありがとうございました。