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