From 40239442401d3fe80e3e12732ac413f34b1b0792 Mon Sep 17 00:00:00 2001 From: giorgosmav21 Date: Sun, 27 May 2018 17:10:20 +0300 Subject: [PATCH] Adding README.md file --- acyclic-visitor/README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 acyclic-visitor/README.md diff --git a/acyclic-visitor/README.md b/acyclic-visitor/README.md new file mode 100644 index 000000000..33c894ce7 --- /dev/null +++ b/acyclic-visitor/README.md @@ -0,0 +1,29 @@ +--- +layout: pattern +title: Acyclic Visitor +folder: acyclic-visitor +permalink: /patterns/acyclic-visitor/ +categories: Behavioral +tags: + - Java + - Difficulty-Intermediate +--- + +![alt text](./etc/acyclic-visitor.png "Acyclic Visitor") + +## Intent +Allow new functions to be added to existing class hierarchies without affecting those hierarchies, and without creating the troublesome dependency cycles that are inherent to the GOF VISITOR Pattern. + +## Applicability +This pattern can be used: +* When you need to add a new function to an existing hierarchy without the need to alter or affect that hierarchy. +* When there are functions that operate upon a hierarchy, but which do not belong in the hierarchy itself. e.g. the ConfigureForDOS / ConfigureForUnix / ConfigureForX issue. +* When you need to perform very different operations on an object depending upon its type. +* When the visited class hierarchy will be frequently extended with new derivatives of the Element class. +* When the recompilation, relinking, retesting or redistribution of the derivatives of Element is very expensive. + +## Related patterns +* [Visitor Pattern](../visitor/README.md) + +## Credits +* [Acyclic Visitor](http://condor.depaul.edu/dmumaugh/OOT/Design-Principles/acv.pdf) \ No newline at end of file