0
전체 파일을 선택하고 내용을 삭제했다고 가정 해보십시오. 이 시나리오에 대한 실행 취소 작업을 공간 효율적인 방식으로 구현하려면 어떻게해야합니까?실행 취소 작업 구현
전체 파일을 선택하고 내용을 삭제했다고 가정 해보십시오. 이 시나리오에 대한 실행 취소 작업을 공간 효율적인 방식으로 구현하려면 어떻게해야합니까?실행 취소 작업 구현
질문이 다소 모호하지만 명령 디자인 패턴이 도움이 될 수 있습니다. 이 방법으로 명령 실행을 캡슐화 할 수 있지만 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
}
}
당신은 데이터 구조에 명령을 저장하고 수행 할 수 있습니다
이public interface Command{
public void exec();
public void undo();
}
그런 다음 각 명령에 대해 당신은 할 수 :
예를 들어, 당신은 할 수 실행 및 실행 취소를 자유롭게 호출 할 수 있습니다. 그것은 당신의 상황에 도움이됩니까? 여기
는 링크입니다 : http://en.wikipedia.org/wiki/Command_pattern
우리가 스택을 사용할 수있는 간단한 취소 작업을 구현하기위한,하지만 우리는 우리가 CTRL + A를했고, 우리는 여전히를 사용 delete.Can 경우 작업을 실행 취소 할 것인지 스택? – user1846721