Расширение шаблона адаптера - PullRequest
4 голосов
/ 12 марта 2012

У меня есть интерфейс IA .Адаптер B реализует этот интерфейс. IZ - это интерфейс, который реализуется классами X , Y и Z .IA - это интерфейс, с которым мое приложение общается с X, Y и Z, используя адаптер B .B содержит экземпляр IZ (шаблон адаптера).Теперь из адаптера B я хочу получить доступ к функциональности, которая уникальна для X, но, поскольку в адаптере он связан с интерфейсом IZ, как я могу получить доступ к этой функции clean ?Кроме того, экземпляр IZ в адаптере B определяется во время выполнения, основываясь на некоторых действиях пользователя вручную.Можно ли каким-либо образом использовать внедрение зависимостей для создания экземпляра IZ в адаптере B (я хочу избежать использования оператора new )?Айова|B (имеет экземпляр ИЗ)

ИЗ/ |\XYZ

РЕДАКТИРОВАТЬ: Есть большие шансы, что X ', Y', Z 'могут появиться в кадре ... все с тем же интерфейсом IZ, но Y' может иметь один метод (может не совпадать с X), которыйтребуется доступ из B. Оба уникальных метода Y 'и X адаптируются к некоторому общему методу M в интерфейсе IA

У меня нет контроля над X, Y и Z или X', Y', Z' кроме того, что они могут реализовать интерфейс IZ.Но у меня есть контроль над IA и B. Я по существу использовал шаблон адаптера, чтобы новые классы могли адаптироваться к моему интерфейсу IA

1 Ответ

2 голосов
/ 07 апреля 2012

Если ваш класс B хочет получить доступ к части открытого интерфейса X, которая не предоставляется через IZ, то он больше не является просто адаптером для интерфейса IZ.

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

Возможно, вам нужна фабрика для создания адаптеров, основанных на типе объектабыть адаптированным.Фабрика также может использоваться для создания экземпляра X, Y & c и необходимого для него адаптера в зависимости от требуемой активности пользователя.

...