Еще раз, если позволит сообщество, обращусь к теме паттерна Мост (Bridge), ибо последние статьи, на мой взгляд, объясняют его не так просто, как нужно.
Основная идея: «Используем Мост там, где нужно менять не только имплементацию, но и абстракцию».
Одна картинка стоит 1000 слов…
Разносим абстракцию (API) и имплементацию в две разных иерархии и получаем возможность управлять ими раздельно. Теперь имплементация не привязана к интерфейсу, и мы можем создавать новые абстракции (путем расширения), основываясь на методах базовых абстракций.
Все. Чего тут посты километровые разводить — не понимаю…
PS Объяснение и картинку взял из Head First Design Patterns
Автор: 1nd1go