Существует несколько способов решения проблемы.
Одним из них является сопоставление с общей моделью предметной области.Это отлично работает, если у вас одинаковое базовое поведение, но может не очень хорошо вам помочь в деталях (разные ключи для разных типов клиентов).
Другой способ - переместить общие биты в базовый класс, а затемнаследовать для разных спецификаций в состоянии (разные свойства) или разного поведения (только идентификатор первичного ключа и т. д.).Учитывая, что это отличается как поведением, так и состоянием, вы можете использовать это направление.
Теперь шаблоны.Прокси-шаблон - это шаблон, в котором новый объект может обеспечивать некоторое поведение и состояние другого объекта, но не является объектом.Думайте об этом, как о том, что означает человек, голосующий за вас в качестве доверенного лица, а затем связывайте это с программным обеспечением.Я бы не думал об этом как обертке, поскольку обертка обычно используется для представления лица, отличного от базового объекта.Это может быть связано с необходимостью скрыть что-либо в нижележащем объекте или добавить дополнительное поведение поверх объекта.Шаблон прокси не поможет с различными ключами;Возможно с оберткой, хотя я не уверен, что это самый простой способ сделать это.