0

ファイル全体を選択し、その内容を削除したとします。このシナリオの取り消し操作をスペース効率の良い方法で実装するにはどうすればよいですか。

4

1 に答える 1

0

あなたの質問は少し漠然としていますが、Command 設計パターンが役立つかもしれません。このようにして、コマンドの実行をカプセル化できますが、undo() を呼び出して、サブジェクトをコマンドが実行される前の状態に戻すオプションもあります。これは、アプリケーション内の操作の元に戻す/やり直しスタックによく使用されます。

例として、次のことができます。

public interface Command{

  public void exec();
  public void undo();
}

次に、コマンドごとに次のことができます。

public class DeleteContents implements Command{

 SomeType previousState;
 SomeType subject;

 public DeleteContents(SomeType subject){
  this.subject = subject; // store the subject of this command, eg. File?
 }

 public void exec(){
   previousState = subject; // save the state before invoking command

   // some functionality that alters the state of the subject
   subject.deleteFileContents();
 }

  public void undo(){

    subject.setFileContents(previousState.getFileContents()); // operation effectively undone
  }

}

コマンドをデータ構造 (コントローラーなど) に保存し、コマンドの実行と取り消しを自由に呼び出すことができます。それはあなたの状況に役立ちますか?

リンクは次のとおりです 。 http://en.wikipedia.org/wiki/Command_pattern

于 2012-12-13T16:17:20.657 に答える