Rather then passing an enum constant into the elementName() dispatch operations and have a switch/case in each of the implementing dispatch functions, we should introduce an interface and separate the different strategy into own implementation classes. The REMOVE_VOWELS strategy could for instance be simply realized as a wrapper to the SIMPLE_NAME strategy (as it only would have to apply some post-processing). The current implementation is error-prone and hard to maintain (e.g. within the REMOVE_VOWELS case a different behavior for unnamed elements is often missing).
Rather then passing an enum constant into the elementName() dispatch operations and have a switch/case in each of the implementing dispatch functions, we should introduce an interface and separate the different strategy into own implementation classes. The REMOVE_VOWELS strategy could for instance be simply realized as a wrapper to the SIMPLE_NAME strategy (as it only would have to apply some post-processing). The current implementation is error-prone and hard to maintain (e.g. within the REMOVE_VOWELS case a different behavior for unnamed elements is often missing).