Патерн Адаптер: опис, функції та можливості, поради по роботі

Адаптери об’єктів на основі делегування

Об’єкт (Adapter) є класичним прикладом шаблону адаптера. Він використовує композицію, а (Adaptee) делегує виклики самому собі, що недоступно адаптерам класів, які розширюють (Adaptee). Така поведінка дає нам кілька переваг перед адаптерами класів, однак адаптери класів можуть бути реалізовані на мовах, що допускають множинне спадкування. Основною перевагою є те, що (Adapter) адаптує не тільки (Adaptee), але і всі його підкласи. Всі ці підкласи існують з одним “невеликим” обмеженням: всі вони не можуть додавати нові методи, тому що використовуваний механізм делегування. Таким чином, для будь-якого нового методу адаптер повинен бути змінений або розширений для надання нових методів. Основним недоліком є те, що він вимагає написання нового коду для делегування всіх необхідних запитів адаптера.