Tôi biết có đã là một câu trả lời được chấp nhận, nhưng tôi muốn ném một nhiều hơn từ đó: OpenGL/DirectX
Không phải của các API có đầy đủ triển khai (mặc dù DirectX chắc chắn là một chút đầu nặng trong đó liên quan), nhưng thay vào đó là các phương thức chung để truyền đạt các lệnh hiển thị tới một cạc đồ họa.
Nhà cung cấp thẻ là công cụ cung cấp trình điều khiển cho một thẻ cụ thể, trong nhiều trường hợp rất cụ thể về phần cứng, nhưng bạn không cần phải quan tâm đến việc một người dùng đang chạy GeForce ABC và một Radeon XYZ vì việc triển khai chính xác bị ẩn đi phía sau API cấp cao. Nếu không, bạn sẽ cần phải có một con đường mã trong trò chơi của bạn cho mỗi thẻ trên thị trường mà bạn muốn hỗ trợ, điều này hoàn toàn không thể quản lý được từ ngày 1. Một điểm cộng lớn nữa là Nvidia/ATI có thể phát hành phiên bản mới hơn, hiệu quả hơn của các trình điều khiển của họ và bạn tự động được hưởng lợi mà không cần nỗ lực từ phía bạn.
Nguyên tắc tương tự cũng có hiệu lực đối với âm thanh, mạng, chuột, bàn phím ... về cơ bản bất kỳ thành phần nào của máy tính của bạn. Cho dù đóng gói xảy ra ở cấp phần cứng hay trong trình điều khiển phần mềm, tại một thời điểm nào đó, tất cả các chi tiết cụ thể đều bị ẩn đi để cho phép bạn xử lý bất kỳ bàn phím nào, chẳng hạn như bàn phím chứ không phải bản sửa lỗi Microsoft Ergonomic Media Explorer Deluxe 2
Khi bạn xem xét nó theo cách đó, nó nhanh chóng trở nên rõ ràng rằng không có một số hình thức đóng gói/trừu tượng máy tính như chúng ta biết ngày nay chỉ đơn giản là sẽ không làm việc cả. Đó là đủ rực rỡ cho bạn?
Tôi không biết rằng tôi sẽ đi xa như vậy để nói "mà không cần phải lo lắng về phần còn lại của mã không biên dịch". Bạn chắc chắn có thể phá vỡ các biên dịch trong khi chỉ thay đổi các thành viên riêng. Lợi ích là nhiều hơn dọc theo dòng có thể hoàn toàn viết lại nội bộ của một lớp miễn là bạn không thay đổi giao diện bên ngoài. Điều này là rất tốt cho một số loại tối ưu hóa. – Toji