> The final leap of logic is that you are then free to
> distribute that class with its IF statements to ONE customer
and you replied:
> But what if other customers need the same IF?
Then, again, you are free (not forced) to distribute to them. Under your scheme, there is no freedom--you force it upon all, since there is *no* separation between what changes and what stays the same.
> Copy-and-paste?
I think you're still thinking:
customer = get_customer()\nif customer!id == 'a':\n [big block of code]\nelse if customer!id =='b':\n [same big block of code]\nelse if customer!id =='c':\n [another big block of code]\n...
That's not composition. Composition says:
customer = get_customer()\ncustomer.handler.do()
The only "copy-and-paste" might be in a config file: one atom which reads "handler = customHandler" instead of "handler = default" (or even better, no line at all for the default).
Verstehen wir uns?