У решения if-Statement есть недостаток, заключающийся в том, что вам может потребоваться изменить код во многих местах для каждого нового клиента.Лучший способ - это инкапсулировать поведение, которое вы хотите изменить в интерфейсе, и затем позволить существующему коду делегировать задачу для экземпляра этого интерфейса.Затем проект готов для любого количества различных вариантов поведения.
Сделайте еще один шаг вперед и спроектируйте свой код в качестве платформы, а затем создайте проект приложения для каждого клиента, который использует среду в дополнение к любому клиенту.конкретный код.Фреймворк может управляться версиями и (внутренне) выпускаться, что позволяет клиентским приложениям не зависеть от последующих выпусков фреймворка.
Я бы порекомендовал вам взглянуть на книгу «Гибкое, надежное программное обеспечение: использование шаблонов».и Agile Development ".Он построен вокруг этого вопроса.