В приложении есть процесс заведения клиентов.
90% полей у клиентов одинаковые и 10% отличаются.
у клиентов также 95% процессов одинаковые и около 5% каждый тип клиента имеет свои.
из этих 95% общих процессов 50% процессов вообще одинаковые и 50% в процессах учитывается своя логика чаще всего основанная на отличающихся 10% полей.
Вопрос.
Как построить бизнес логику для такого.
например операция SaveClient (VIP, Basic, NonResident)
Сейчас сделал на основе паттерна Builder 3 класса VIPClientBuilder, BasicClientBuilder и NonResidentClientBuilder
и в каждом свой набор методов, даже тех которые полностью одинаковые для всех типов клиентов.
Есть смысл общие методы выносить в базовый класс делая методы виртуальными?
Или может предложите варианты получше