Возьмите два базовых класса A и B, которые
похожи, но предпочтительнее
различны. У каждого есть подкласс (A 'и
B '), которые добавляют ту же функциональность
и члены их соответствующих
классы.
Это немного странное место для начала. Если бы это был я, я бы хотел изменить эту часть дизайна.
Предполагая, что это не разумно, по какой-то причине, я думаю, что Decorator - лучшее, что вы можете сделать, чтобы избежать дублирования кода.
Вам нужно будет создать подклассы A & B. И вам придется объявить добавленные методы и свойства в каждом. Эти члены должны делегировать членам другого класса, которые могут реализовать общую функциональность. Экземпляр этого класса будет содержаться как в A, так и в B.
Это действительно спасет вас от дублирования, только если реализация этих общих членов значительна.