Nguyên tắc mở-đóng (OCP) là gì?

Nguyên tắcMở / Đónglà nguyên tắc thiết kế cơ bản nhất trong thế giới phát triển phần mềm. Nó hướng dẫn chúng ta cách xây dựng một hệ thống ổn định và linh hoạt.

Định nghĩa:

Một thực thể phần mềm như lớp, mô-đun và hàm nên mở cho việc mở rộng và đóng cho việc sửa đổi.

Ý nghĩa của nguyên tắc mở và đóng là một thực thể phần mềm nên được mở rộng để đạt được sự thay đổi, thay vì sửa đổi mã hiện có để đạt được sự thay đổi.

Nguyên tắc mở và đóng là một nguyên tắc hạn chế sự phát triển và thiết kế hiện tại cho những điều trong tương lai của thực thể phần mềm.

Lưu ý: Nguyên tắc mở và đóng là mở cho việc mở rộng và đóng cho việc sửa đổi. Điều này không có nghĩa là sẽ không có sửa đổi nào được thực hiện. Các thay đổi trong các mô-đun cấp thấp phải được kết hợp với các mô-đun cấp cao, nếu không sẽ trở thành một đoạn mã cô lập và vô nghĩa.

Tầm quan trọng của nguyên tắc mở và đóng:

  • Tác động của nguyên tắc mở và đóng đến việc kiểm thử

Nguyên tắc mở và đóng là giữ cho mã kiểm thử gốc vẫn có thể chạy bình thường, chúng ta chỉ cần kiểm thử mã mở rộng.

  • Nguyên tắc mở và đóng có thể cải thiện khả năng tái sử dụng

Trongthiết kế hướng đối tượng, tất cả logic được kết hợp từ logic nguyên tử, thay vì thực hiện một logic kinh doanh trong một lớp một cách độc lập. Chỉ bằng cách này, mã mới có thể được tái sử dụng. Độ phân giải càng nhỏ, khả năng tái sử dụng càng lớn.

  • Nguyên tắc mở và đóng có thể cải thiện khả năng bảo trì
  • Yêu cầu phát triển hướng đối tượng

Cách sử dụng nguyên tắc mở và đóng:

Đầu tiên, hạn chế việc mở rộng thông qua giao diện hoặc lớp trừu tượng, giới hạn việc mở rộng của ranh giới, và không cho phép các phương thức công khai không tồn tại trong giao diện hoặc lớp trừu tượng;

Thứ hai, cố gắng sử dụng giao diện hoặc lớp trừu tượng cho các kiểu tham số và đối tượng tham chiếu thay vì các lớp triển khai;

Thứ ba, lớp trừu tượng nên được giữ ổn định nhất có thể, một khi đã được xác nhận, không cho phép sửa đổi.

Việc đóng gói các thay đổi có hai ý nghĩa:

Đầu tiên, đóng gói các thay đổi giống nhau vào một giao diện hoặc lớp trừu tượng;

Thứ hai, đóng gói các thay đổi khác nhau vào các giao diện hoặc lớp trừu tượng khác nhau. Hai thay đổi khác nhau không nên xuất hiện trong cùng một giao diện hoặc lớp trừu tượng.


Ví dụ

Một ví dụ, mở và đóng cửa bằng tay.

Nếu có một yêu cầu mới, cần phải tăng chức năng mở và đóng ngăn kéo bằng tay. Đối với mã, bạn cần thêm một lớp Drawer và sửa đổi lớp Hand cùng một lúc.

Theo ví dụ của nguyên tắc mở và đóng OCP, việc mở và đóng cửa bằng tay phụ thuộc vào một giao diện, và lớp triển khai cụ thể thực hiện giao diện này.

Khi cần tăng số lượng tay để mở và đóng tủ lạnh, lớp tủ lạnh thực hiện giao diện này mà không sửa đổi lớp Hand và giao diện gốc.

Nhiều tài nguyên hướng đối tượng hơn

This post is also available in Deutsch, English, Español, فارسی, Français, Bahasa Indonesia, 日本語, Polski, Portuguese, Ру́сский, 简体中文 and 繁體中文.

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *