- Gof/Command . . . . 21 matches
때때로 MenuItem은 연속된 명령어들의 일괄수행을 필요로 한다. 예를 들어서 해당 페이지를 중앙에 놓고 일반크기화 시키는 MenuItem은 CenterDocumentCommand 객체와 NormalSizeCommand 객체로 만들 수 있다. 이러한 방식으로 명령어들을 이어지게 하는 것은 일반적이므로, 우리는 복수명령을 수행하기 위한 MenuItem을 허용하기 위해 MacroCommand를 정의할 수 있다. MacroCommand는 단순히 명령어들의 sequence를 수행하는 Command subclass의 구체화이다. MacroCommand는 MacroCommand를 이루고 있는 command들이 그들의 receiver를 정의하므로 명시적인 receiver를 가지지 않는다.
3. Command를 묶을 수 있다. 앞서 설명한 MacroCommand가 그 예가 된다. 일반적으로 composite command들은 CompositePattern의 인스턴스이다.
여기 보여지는 C++ code는 Motivation 섹션의 Command 크래스에 대한 대강의 구현이다. 우리는 OpenCommand, PasteCommand 와 MacroCommand를 정의할 것이다. 먼저 추상 Commmand class 는 이렇다.
MacroCommand는 부명령어들의 sequence를 관리하고 부명령어들을 추가하거나 삭제하는 operation을 제공한다. subcommand들은 이미 그들의 receiver를 정의하므로 MacroCommand는 명시적인 receiver를 요구하지 않는다.
class MacroCommand : public Command {
MacroCommand ();
virtual ~MacroCommand ();
MacroCommand의 열쇠는 Execute 맴버함수에 있다. 이것은 모든 부명령어들을 탐색하면서 그들 각각의 Execute operation를 수행한다.
void MacroCommand::Execute () {
MacroCommand 가 Unexecute operation을 구현하기 위해서 MacroCommand의 부명령어들은 Execute operation에서 구현된 순서의 역순으로 참조되면서 unexecute해야 함을 숙지하자.
최종적으로 MacroCommand 는 부명령어들을 관리할 operation을 제공해야한다. MacroCommand는 또한 MacroCommand를 이루는 부명령어들을 삭제할 책임을 진다.
void MacroCommand::Add (Command* c) {
void MacroCommand::Remove (Command* c) {
CompositePattern 는 MacroCommand를 구현하는데 이용될 수 있다.
- Gof/Composite . . . . 1 match
CommandPattern은 MacroCommand Composite 클래스로 Command 객체들이 조합되고 나열하는 방법에 대해 서술한다.
Found 2 matching pages out of 7555 total pages (5000 pages are searched)
You can also click here to search title.