Tôi muốn đề xuất rằng đặc tính quan trọng nhất của lập trình hướng đối tượng là quản lý phức tạp .
Bộ não con người chỉ có thể nắm giữ rất nhiều khái niệm cùng một lúc - giới hạn được trích dẫn của việc ghi nhớ 7 +/- 2 vật phẩm độc lập xuất hiện trong tâm trí.
Khi tôi đang làm việc trên một hệ thống 600kloc tại nơi làm việc, tôi không thể giữ toàn bộ mọi thứ trong đầu. Nếu tôi phải làm điều đó, tôi sẽ bị hạn chế làm việc trên các hệ thống nhỏ hơn nhiều .
May mắn thay, tôi không phải làm vậy. Các mẫu thiết kế khác nhau và các cấu trúc khác mà chúng tôi đã sử dụng trong dự án đó có nghĩa là tôi không phải xử lý toàn bộ hệ thống cùng một lúc - Tôi có thể nhặt từng mảnh riêng lẻ và làm việc với chúng, biết rằng chúng phù hợp với ứng dụng rộng hơn theo những cách được xác định rõ.
Tất cả các khái niệm OO quan trọng cung cấp các cách để quản lý sự phức tạp.
Đóng gói - hãy để tôi xử lý một API bên ngoài cung cấp cho tôi các dịch vụ khác nhau mà không phải lo lắng về cách các dịch vụ đó được triển khai.
Trừu tượng - hãy để tôi tập trung vào các đặc điểm thiết yếu và bỏ qua những gì không liên quan.
Thành phần - hãy để tôi sử dụng lại các thành phần đã được xây dựng trong các kết hợp mới
Đa hình - hãy để tôi yêu cầu một dịch vụ mà không cần lo lắng về việc các đối tượng khác nhau có thể cung cấp dịch vụ theo những cách khác nhau như thế nào.
Kế thừa - hãy để tôi sử dụng lại một giao diện hoặc cách triển khai, chỉ cung cấp các phần khác với những gì đã đi trước đó.
Nguyên tắc trách nhiệm duy nhất - cho phép giữ mục đích cho từng đối tượng rõ ràng và súc tích, vì vậy thật dễ dàng để lý luận về
Liskov Thay thế Prinicple - chúng ta đừng đặt bẫy cho nhau bằng cách đưa ra các phụ thuộc lẻ
Nguyên tắc mở / đóng - hãy cho phép mở rộng và sửa đổi theo những cách không yêu cầu chúng tôi mạo hiểm phá vỡ mã hiện có
Dependency Injection - chúng ta hãy đưa thành phần lên cấp độ tiếp theo và lắp ráp các thành phần lại với nhau sau này.
Phát triển theo định hướng giao diện - hãy đưa sự trừu tượng lên cấp độ tiếp theo và chỉ phụ thuộc vào sự trừu tượng hóa, không bao giờ phụ thuộc vào việc triển khai cụ thể.