Я думаю, что мне нужен шаблон адаптера здесь, но я, кажется, повторяю детали реализации метода - PullRequest
0 голосов
/ 23 апреля 2011

Ниже вы можете видеть, что у меня есть два конкретных класса, которые могут совместно использовать почти все детали реализации, уже предоставленные через абстрактный класс. Каждый из них должен самостоятельно реализовать 2-3 метода. Однако ImplOne также реализует интерфейс InterfaceTwo, который имеет дополнительные 1-2 метода для реализации. Я не хочу предоставлять точно такие же подробности реализации в ImplOne, как я делаю в AbstractImpl, но то, что у меня здесь есть в настоящее время, кажется неправильным. В шаблоне адаптера, из примеров, которые я видел, детали реализации, похоже, дублируются для адаптируемых интерфейсов.

       InterfaceOne
         /      \
InterfaceTwo  AbstractImpl
         \      /       \
          ImplOne      ImplTwo

1 Ответ

1 голос
/ 24 апреля 2011

С этим сценарием проблем нет. ImplOne должен реализовывать все методы, объявленные в interfaceOne или interfaceTwo, если это не реализовано abstractImpl implOne также должен реализовывать абстрактные методы из abstractImpl. В качестве упражнения я предлагаю создать ImplOne без методов и позволить компилятору сообщить, какие методы необходимо реализовать.

...