Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Fix Acyclic Visitor readme layout
  • Loading branch information
iluwatar committed Dec 13, 2019
commit 0335c6151216b8458700b0f605f06a9e9a4efb0f
3 changes: 3 additions & 0 deletions acyclic-visitor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Allow new functions to be added to existing class hierarchies without affecting

## 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.
Expand All @@ -25,11 +26,13 @@ This pattern can be used:

## Consequences
The good:

* No dependency cycles between class hierarchies.
* No need to recompile all the visitors if a new one is added.
* Does not cause compilation failure in existing visitors if class hierarchy has a new member.

The bad:

* Violates the principle of least surprise or Liskov's Substitution principle by showing that it can accept all visitors but actually only being interested in particular visitors.
* Parallel hierarchy of visitors has to be created for all members in visitable class hierarchy.

Expand Down