Misalkan Anda sedang membangun pohon, daftar, grafik, dan sebagainya. Mengapa Anda harus mengekspos detail internal sebuah node atau sel ke dunia luar?
Siapa pun yang menggunakan grafik atau daftar harus hanya mengandalkan antarmuka, bukan implementasinya, karena Anda mungkin ingin mengubahnya suatu hari di masa mendatang (misalnya dari implementasi berbasis array ke yang berbasis pointer) dan klien menggunakan Anda struktur data ( masing-masing dari mereka ) harus memodifikasi kode mereka agar mencukupi untuk implementasi baru.
Alih-alih, merangkum implementasi sebuah node atau sel dalam kelas dalam pribadi memberi Anda kebebasan untuk memodifikasi implementasi kapan saja Anda perlu, tanpa klien dipaksa untuk menyesuaikan kode mereka secara konsekuen, selama antarmuka struktur data Anda tetap ada tidak tersentuh.
Menyembunyikan detail implementasi struktur data Anda juga mengarah pada keuntungan keamanan, karena jika Anda ingin mendistribusikan kelas Anda, Anda hanya akan membuat file antarmuka yang tersedia bersama dengan file implementasi yang dikompilasi dan tidak ada yang akan tahu jika Anda benar-benar menggunakan array atau pointer. untuk implementasi Anda, dengan demikian melindungi aplikasi Anda dari semacam eksploitasi atau, setidaknya, pengetahuan karena ketidakmungkinan untuk menyalahgunakan atau memeriksa kode Anda. Selain masalah praktis, tolong jangan meremehkan fakta bahwa ini adalah solusi yang sangat elegan dalam kasus seperti itu.