Search results
Results from the WOW.Com Content Network
The Visitor [1] design pattern is one of the twenty-three well-known Gang of Four design patterns that describe how to solve recurring design problems to design flexible and reusable object-oriented software, that is, objects that are easier to implement, change, test, and reuse.
With this in mind, one ought never to presume the use of agents in the double-dispatch and their application in visitor patterns. If one can clearly see a design limit as to the domain of class types that will be involved in the co-variant interactions, then a direct call is the more efficient solution in terms of computational expense.
The single-serving visitor pattern should be used when visitors do not need to remain in memory. This is often the case when visiting a hierarchy of objects (such as when the visitor pattern is used together with the composite pattern) to perform a single task on it, for example counting the number of cameras in a 3D scene.
The above example can be realized using the visitor pattern. It would require each animal class to implement an accept method accepting an object implementing the interface AnimalVisitor (adding non-local boilerplate code). The function animalToFood would be realized as the visit method of an implementation of AnimalVisitor.
Examples include user interface design patterns, [11] information visualization, [12] secure design, [13] "secure usability", [14] Web design [15] and business model design. [ 16 ] The annual Pattern Languages of Programming Conference proceedings [ 17 ] include many examples of domain-specific patterns.
As a side note we already have few examples of visitor patterns elsewhere (e.g. C++ example or java one). I have a nice book on OOP programming (1997) I used as reference for Container (abstract data type). It has a dedicated subsection called 15.4 Iteration where a case of visitor pattern use is explained so I'm going to cite it if nobody minds.
For example, class Employee might inherit from class Person. All the data and methods available to the parent class also appear in the child class with the same names. For example, class Person might define variables "first_name" and "last_name" with method "make_full_name()".
Design Patterns: Elements of Reusable Object-Oriented Software (1994) is a software engineering book describing software design patterns. The book was written by Erich Gamma , Richard Helm , Ralph Johnson , and John Vlissides , with a foreword by Grady Booch .