라이브러리

[PHP] CommonMarkNode::accept - 방문




CommonMarkNode::accept


CommonMarkNode는 Markdown 문법을 분석하고 처리하는 데 사용되는 클래스입니다. accept 메서드는 Visitor 패턴을 구현하기 위해 사용됩니다. Visitor 패턴은 객체의 내부 구조를 변경하지 않고, 객체를 방문하고 처리하는 데 사용됩니다.

Visitor 패턴


Visitor 패턴은 다음과 같은 목적을 가진 패턴입니다.

- 객체의 내부 구조를 변경하지 않고, 객체를 방문하고 처리하는 데 사용됩니다.
- 객체의 내부 구조를 변경하지 않고, 객체를 처리하는 데 사용됩니다.

CommonMarkNode::accept 예제


#hostingforum.kr
php

// CommonMarkNode.php

class CommonMarkNode {

    private $children;



    public function __construct($children = null) {

        $this->children = $children ?: [];

    }



    public function accept(Visitor $visitor) {

        foreach ($this->children as $child) {

            $child->accept($visitor);

        }

        $visitor->visit($this);

    }

}



// Visitor.php

interface Visitor {

    public function visit(CommonMarkNode $node);

}



// ConcreteVisitor.php

class ConcreteVisitor implements Visitor {

    public function visit(CommonMarkNode $node) {

        echo "Visiting node: " . get_class($node) . "
";

    }

}



// Example.php

class Example {

    public function main() {

        $node = new CommonMarkNode([

            new CommonMarkNode(),

            new CommonMarkNode(),

        ]);



        $visitor = new ConcreteVisitor();

        $node->accept($visitor);

    }

}



$example = new Example();

$example->main();



예제 설명


위의 예제에서는 CommonMarkNode 클래스가 accept 메서드를 구현하고 있습니다. accept 메서드는 Visitor 인터페이스를 구현한 ConcreteVisitor 클래스의 visit 메서드를 호출합니다.

ConcreteVisitor 클래스는 visit 메서드를 구현하고 있습니다. 이 메서드는 CommonMarkNode 객체를 방문하고 처리합니다.

Example 클래스는 main 메서드를 구현하고 있습니다. 이 메서드는 CommonMarkNode 객체를 생성하고, ConcreteVisitor 클래스의 인스턴스를 생성한 후 accept 메서드를 호출합니다.

결과


#hostingforum.kr


Visiting node: CommonMarkNode

Visiting node: CommonMarkNode

Visiting node: CommonMarkNode



결론


CommonMarkNode::accept 메서드는 Visitor 패턴을 구현하기 위해 사용됩니다. accept 메서드는 Visitor 인터페이스를 구현한 클래스의 visit 메서드를 호출합니다. 이 패턴은 객체의 내부 구조를 변경하지 않고, 객체를 방문하고 처리하는 데 사용됩니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 8,985건 / 581 페이지

검색

게시물 검색