Giả sử bạn đang xây dựng một cái cây, một danh sách, một biểu đồ, v.v. Tại sao bạn nên phơi bày các chi tiết bên trong của một nút hoặc một ô ra thế giới bên ngoài?
Bất cứ ai sử dụng biểu đồ hoặc danh sách chỉ nên dựa vào giao diện của nó, chứ không phải triển khai nó, vì bạn có thể muốn thay đổi nó một ngày trong tương lai (ví dụ: từ triển khai dựa trên mảng sang dạng dựa trên con trỏ) và các máy khách sử dụng cấu trúc dữ liệu ( mỗi một trong số họ ) sẽ phải sửa đổi mã của họ để phù hợp với mã triển khai mới.
Thay vào đó, việc đóng gói việc thực hiện một nút hoặc một ô trong một lớp bên trong riêng cho phép bạn tự do sửa đổi việc thực hiện bất cứ lúc nào bạn cần, mà không cần các máy khách buộc phải điều chỉnh mã của chúng, miễn là giao diện của cấu trúc dữ liệu của bạn vẫn còn hoang sơ
Việc che giấu các chi tiết về việc triển khai cấu trúc dữ liệu của bạn cũng dẫn đến các lợi thế bảo mật, bởi vì nếu bạn muốn phân phối lớp của mình, bạn sẽ chỉ cung cấp tệp giao diện cùng với tệp triển khai được biên dịch và sẽ không ai biết bạn có thực sự sử dụng mảng hay con trỏ không để thực hiện, do đó bảo vệ ứng dụng của bạn khỏi một số loại khai thác hoặc, ít nhất, kiến thức do không thể sử dụng sai hoặc kiểm tra mã của bạn. Ngoài các vấn đề thực tế, xin đừng đánh giá thấp thực tế rằng đó là một giải pháp cực kỳ thanh lịch trong những trường hợp như vậy.