vendredi 12 août 2016

Visitor pattern implementation in case of source code un-availability

One of the reasons to consider the Visitor_pattern:

A practical result of this separation is the ability to add new operations to existing object structures without modifying those structures.

Assume that you don't have source code of third party of libraries and you have add one operation on related objects.

Since you don't have object, your elements (Third party classes) can't be modified to add Visitor.

enter image description here

In this case, double dispatch is not possible.

So which option is generally preferred?

Option 1: Extend one more inheritance hierarchy on top of third party class and implement pattern as show in picture with double dispatch?

For a given hierarchy of Class B which extends Class A, I will add

ElementA extends A
ElementB extends B

Now ConcreteElements are derived from ElementA instead of class A.

Cons: The number of classes will grow.

Option 2: Use Visitor class a central helper class and get the work done with single dispatch.

Cons: We are not really following Visitor patter as per UML diagram.

Correct if I am worng.

Aucun commentaire:

Enregistrer un commentaire