I'm working on Java-based server software that needs to be customized for a few, but large customers. A separate instance of the server runs for each customer.
Each customer has sufficiently differing requirements such that different business logics is required for each of the implementations.
At this time, the different business logics is handled by writing separate business logic classes, and having the "core" classes call the appropriate class, depending on the setting in a property file.
I'd like to know how you've designed your software around the needs of a few (but very important) business customers?
Note: We cannot use reflection due to obfuscation requirements.