The Visitor Design Pattern allows defining a new operation over elements in an object structure without changing the classes of the elements. It puts the operations in visitor classes so new operations are easy to add. While this keeps behavior partitioned and localized, adding new element classes is difficult as it requires changes to the visitor interface and implementations. The element interface may also need powerful operations that compromise encapsulation.