C/C++ 디자인 패턴 (22) — 방문자(Visitor)
수식 파서가 만든 구문 트리(AST)에 평가, 출력, 최적화, 타입 검사 같은 연산이 계속 늘어난다고 하자. 연산마다 노드 클래스에 가상 함수를 추가하면, 연산 하나를 넣을 때마다 모든 노드 클래스를 고쳐야 하고…
수식 파서가 만든 구문 트리(AST)에 평가, 출력, 최적화, 타입 검사 같은 연산이 계속 늘어난다고 하자. 연산마다 노드 클래스에 가상 함수를 추가하면, 연산 하나를 넣을 때마다 모든 노드 클래스를 고쳐야 하고…
디렉터리 크기를 구하려면 안에 든 파일 크기를 더하고, 하위 디렉터리가 있으면 그 안으로 다시 들어가야 한다. 파일과 디렉터리를 별개 타입으로 다루면 순회하는 코드마다 "이게 파일인가 디렉터리인가"를 분기해야 한다. 컴포지트(Composite)는 개별…