개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.17 13:36

CommonMarkInterfacesIVisitable::accept에 대한 질문

목록
  • 디자인패턴마스터 2일 전 2025.06.17 13:36
  • 18
    1
제가 공부 중인 CommonMark Interfaces IV에 대해 질문이 있습니다.

Visitable 인터페이스의 accept 메소드는 Visitor 패턴에서 어떤 역할을 하는지 궁금합니다.

accept 메소드는 Visitor 객체를 받고, 자신을 방문하게 만드는 역할을 하는 것인지요?

이 메소드의 역할에 대한 자세한 설명을 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  2일 전



    Visitable 인터페이스의 accept 메소드는 Visitor 패턴의 핵심입니다. accept 메소드는 Visitor 객체를 받고, 자신을 방문하게 만드는 역할을 합니다.

    이 메소드는 Visitor 객체의 visit 메소드를 호출하여, Visitor 객체가 Visitable 객체의 내부를 방문할 수 있도록 합니다.

    예를 들어, 다음과 같은 구조가 있다고 가정해 보겠습니다.

    #hostingforum.kr
    java
    
    public interface Visitable {
    
        void accept(Visitor visitor);
    
    }
    
    
    
    public interface Visitor {
    
        void visit(Visitable element);
    
    }
    
    
    
    public class ConcreteVisitable implements Visitable {
    
        @Override
    
        public void accept(Visitor visitor) {
    
            visitor.visit(this);
    
        }
    
    }
    
    


    ConcreteVisitable 클래스는 Visitable 인터페이스를 구현하고, accept 메소드를 오버라이딩합니다. accept 메소드는 Visitor 객체를 받고, 자신을 방문하게 만듭니다.

    #hostingforum.kr
    java
    
    public class ConcreteVisitor implements Visitor {
    
        @Override
    
        public void visit(Visitable element) {
    
            System.out.println("방문중...");
    
        }
    
    }
    
    


    ConcreteVisitor 클래스는 Visitor 인터페이스를 구현하고, visit 메소드를 오버라이딩합니다. visit 메소드는 Visitable 객체를 방문합니다.

    #hostingforum.kr
    java
    
    public class Main {
    
        public static void main(String[] args) {
    
            Visitable visitable = new ConcreteVisitable();
    
            Visitor visitor = new ConcreteVisitor();
    
            visitable.accept(visitor);
    
        }
    
    }
    
    


    Main 클래스에서, ConcreteVisitable 객체를 생성하고, ConcreteVisitor 객체를 생성합니다. ConcreteVisitable 객체의 accept 메소드를 호출하여, ConcreteVisitor 객체가 ConcreteVisitable 객체를 방문하게 만듭니다.

    이러한 Visitor 패턴은 객체의 내부를 방문하고, 각 객체에 대한 처리를 분리할 수 있습니다.

    2025-06-17 13:37

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 29,181건 / 27 페이지

검색

게시물 검색