Припустимо, ви будуєте дерево, список, графік тощо. Чому слід виставляти внутрішні деталі вузла чи комірки зовнішньому світу?
Кожен, хто використовує графік або список, повинен покладатися тільки на його інтерфейс, а не на його реалізацію, оскільки ви можете захотіти його змінити за один день у майбутньому (наприклад, від реалізації на основі масиву на основі вказівника) та клієнтів, що використовують ваш структура даних ( кожна з них ) повинна була б змінити свій код, щоб пристосувати його до нової реалізації.
Натомість інкапсуляція реалізації вузла або комірки в приватному внутрішньому класі дає вам свободу змінювати реалізацію в будь-який час, коли вам потрібно, щоб клієнти не були змушені коригувати свій код, отже, поки залишається інтерфейс вашої структури даних недоторканий.
Приховування деталей реалізації вашої структури даних також призводить до переваг безпеки, тому що якщо ви хочете розподілити свій клас, ви зробите доступним лише файл інтерфейсу разом із зібраним файлом реалізації, і ніхто не дізнається, чи ви фактично використовуєте масиви чи покажчики для вашої реалізації, таким чином захищаючи вашу програму від якоїсь експлуатації або, принаймні, знань через неможливість неправомірного використання чи перевірки вашого коду. Окрім практичних питань, будь ласка, не варто недооцінювати той факт, що це надзвичайно елегантне рішення у таких випадках.