
CommonMarkInterfacesIVisitable::accept 메서드는 Visitor Design Pattern의 핵심입니다. 이 메서드는 Visitable 인터페이스를 구현한 객체에 대한 방문자를 등록하여, 방문자가 Visitable 객체를 방문할 수 있도록 합니다.
accept 메서드는 일반적으로 두 개의 매개변수를 받습니다. 하나는 방문자 객체, 하나는 자신을 방문할 때 필요한 추가 정보입니다. 이 메서드는 방문자 객체에 자신을 방문할 때 필요한 정보를 전달하고, 방문자가 자신을 방문할 수 있도록 합니다.
예를 들어, 다음과 같은 Visitable 인터페이스를 생각해 보세요.
#hostingforum.kr
cpp
class Visitable {
public:
virtual void accept(Visitor* visitor, void* data) = 0;
};
이 인터페이스를 구현한 클래스는 accept 메서드를 구현하여 방문자를 등록하고, 방문자가 자신을 방문할 수 있도록 합니다.
#hostingforum.kr
cpp
class Node : public Visitable {
public:
void accept(Visitor* visitor, void* data) override {
visitor->visit(this, data);
}
};
이제 방문자 클래스를 구현해 보겠습니다.
#hostingforum.kr
cpp
class Visitor {
public:
virtual void visit(Node* node, void* data) = 0;
};
이 방문자 클래스는 Node 클래스를 방문할 수 있도록 visit 메서드를 구현합니다.
#hostingforum.kr
cpp
class NodeVisitor : public Visitor {
public:
void visit(Node* node, void* data) override {
// Node를 방문할 때 필요한 로직을 구현합니다.
}
};
이제 accept 메서드를 사용하여 Node 객체를 방문할 수 있습니다.
#hostingforum.kr
cpp
int main() {
Node node;
NodeVisitor visitor;
node.accept(&visitor, nullptr);
return 0;
}
accept 메서드는 Visitor Design Pattern의 핵심입니다. 이 메서드는 Visitable 객체를 방문할 수 있도록 방문자를 등록하고, 방문자가 자신을 방문할 수 있도록 합니다.
2025-07-18 16:31