Visitor Pattern - State

State

Aside from potentially improving separation of concerns, the visitor pattern has an additional advantage over simply calling a polymorphic method: a visitor object can have state. This is extremely useful in many cases where the action performed on the object depends on previous such actions.

An example of this is a pretty-printer in a programming language implementation (such as a compiler or interpreter). Such a pretty-printer object (implemented as a visitor, in this example), will visit nodes in a data structure that represents a parsed and processed program. The pretty-printer will then generate a textual representation of the program tree. To make the representation human-readable, the pretty-printer should properly indent program statements and expressions. The current indentation level can then be tracked by the visitor as its state, correctly applying encapsulation, whereas in a simple polymorphic method invocation, the indentation level would have to be exposed as a parameter and the caller would rely on the method implementation to use and propagate this parameter correctly.

Read more about this topic:  Visitor Pattern

Famous quotes containing the word state:

    We are at heart so profoundly anarchistic that the only form of state we can imagine living in is Utopian; and so cynical that the only Utopia we can believe in is authoritarian.
    Lionel Trilling (1905–1975)

    Texas is a heaven for men and dogs but hell for women and oxen.
    —Administration in the State of Texa, U.S. public relief program (1935-1943)

    The principal saloon was the Howlin’ Wilderness, an immense log cabin with a log fire always burning in the huge fireplace, where so many fights broke out that the common saying was, “We will have a man for breakfast tomorrow.”
    —For the State of California, U.S. public relief program (1935-1943)