> As long as the differences [are] keyed to a single factor:
> "customer", then polymorphism works nice. But orthogonality
> and/or new granularities of differences is common. It bites
> me all the time...I don't see how composition solves it either.
Then read up on c2 or elsewhere and find out...that is exactly the problem which composition and delegation solve.
> If you are using a declarative template, then it is not smart
> enough to know what day it is for day-based logic.
Agreed--you need more powerful code...put it in a class...
> If it is a class, then it probably needs IF statements anyhow.
So close and no cigar? The final leap of logic is that you are then free to distribute that class with its IF statements to ONE customer (or two, or 78), not ALL customers. This is one of the central tenets of OOP: "separate the things that change from the things that stay the same."