Схожая логика, но разные классы (избегайте дублирования) - PullRequest
1 голос
/ 16 ноября 2010

У меня есть четыре аналогичные структуры классов, сгенерированные из XSD, каждая из которых представляет собой отдельную версию API.

Дело в том, что у меня есть классы, которые работают со всеми этими различными структурами классов, но большая часть кода одинакова во всех структурах. У меня не может быть интерфейсов для каждого класса, так как все классы генерируются из XSD. Все же я хочу удалить дублирование из моей кодовой базы ...

Что бы здесь было хорошим ОО-решением?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

Я бы, наверное, пошел на использование класса фасада.Этот класс - ваша единственная точка, которую нужно знать о других четырех классах.Он занимается переадресацией звонков на правильный класс.Таким образом, вы не только добиваетесь сокращения дублирующегося кода, но также абстрагируете API-интерфейсы от остальной базы кода, упрощая работу с изменениями в API.

HTH.

0 голосов
/ 16 ноября 2010

Я бы использовал небольшую композицию объектов.Определите класс, который содержит общие функциональные возможности и сохраните экземпляр в качестве члена для каждого из ваших сгенерированных классов.Постарайтесь свести к минимуму количество изменяемого состояния, которое вы храните в классе, чтобы вам было проще его тестировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...