방문자 패턴은 어떤 객체의 계층 각각마다 서로 다른 작업을 수행해야 할때 사용하면 좋습니다. 기존 코드의 수정 없이 새로운 방문자를 추가하는 것만으로도 기능을 확장 할 수 있습니다. 기능 확장면에서 OCP 충실히 따를 수 있습니다. 다음과 같이 DoubleExpression과 AdditionExpression 수식이 있고 각 수식마다 새로운 동작을 추가해야 할때를 생각해봅시다. struct Expression { }; struct DoubleExpression : Expression { double value; explicit DoubleExpression(const double value) : value{value} {} }; struct AdditionExpression : Expression { E..