I have to write a visitor design-pattern in which function selection is based on arguments’ type.
-------------
| Visitor |
|-----------|
|Visit(Elt) |
|Visit(EltA)|
|Visit(EltB)|
-------------
|____________________
| |
---------------- ----------------
| VistorCountA | | VistorCountB |
| ------------ | |---------------
| Visit(Elt) | | Visit(Elt) |
| Visit(EltA) | | Visit(EltA) |
| Visit(EltB) | | Visit(EltB) |
---------------- ----------------
On heritage tree:
---------------------
| Elt |
---------------------
| Accept(Visitor v) |
---------------------
|___________________________
| |
--------------------- ---------------------
| EltA | | EltB |
|-------------------| |-------------------|
| Accept(Visitor v) | | Accept(Visitor v) |
--------------------- ---------------------
In this sample, classes Elt, EltA, and EltB are user object’s type. And I have to write three functions named ‘Visit()’.