I wrote:

> 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?