Чому важливо, щоб об'єкти і контейнери мали спільний інтерфейс?
Важливо, щоб об'єкти (листя) і контейнери (складові вузли) мали спільний інтерфейс, тому що це дозволяє працювати з ними однаково, не розрізняючи їхні типи.
1. Спрощення клієнтського коду
Клієнту не потрібно перевіряти, що перед ним - одиничний елемент чи група.
Можна викликати один і той самий метод (operation()), і все просто працює:
for (Component c : components) c.render();2. Розширюваність
Додавання нових типів елементів не вимагає зміни клієнтського коду: достатньо, щоб новий клас реалізував той самий інтерфейс.
3. Принцип підстановки Лісков (LSP)
Спільний інтерфейс дозволяє підставляти будь-який об'єкт дерева замість іншого, не ламаючи логіку.
4. Інкапсуляція структури
Клієнту не потрібно знати, як влаштоване дерево всередині. Він працює з ним як з єдиним цілим.
Висновок: Спільний інтерфейс об'єднує листя і контейнери в єдиний поліморфний механізм, що робить код універсальним, гнучким і незалежним від структури даних.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.