I believe the problem you describe is called [multiple-dispatch](https://en.wikipedia.org/wiki/Multiple_dispatch). In languages that support multi-methods, this is not a problem at all because the language itself can express this relationship between a specific value and a function that needs to be called for it.
The way you're solving it is just one of the ways to do it when you don't have that luxury. Alternatively, you could use switches or tables.
```
switch processingType {
case CONFABULATION: return confabulation(data);
case RETICULATION: return reticulation(data);
case SPLICE: return splice(data);
}
```
If your language supports functional programming, you could have a table do that multi-dispatch for you.
```
multiDispatch[CONFABULATION] = confabulation
multiDispatch[RETICULATION] = reticulation
multiDispatch[SPLICE] = splice
```
Then you can simply do:
```
multiDispatch[processingType](data);
```