Thứ Sáu, 4 tháng 1, 2013

Nguyên lý Mở - Đóng

1. Định nghĩa

Nguyên lý Mở - Đóng được phát biểu như sau:

Những thực thể (entity) của phần mềm như class, module, function nên được đóng cho việc chỉnh sửa và nên mở cho việc kế thừa.

2. Giải thích

Khi thiết kế phần mềm theo nhu cầu người sử dụng, giả sử cấu trúc của phần mềm là A tương tác với B cho ra kết quả C. Người sử dụng thứ 1 yêu cầu như sau:
- Trong giai đoạn 1: A1 + B1 -> C1
- Trong giai đoạn 2: có sự thay đổi yêu cầu từ người dùng nên A1 phải sửa lại thành A2, như vậy công thức sẽ là A2 + B1 -> C2
- Trong giai đoạn 3: có sự thay đổi yêu cầu từ người dùng nên A2 phải sửa lại thành A3, như vậy công thức sẽ là A3 + B1 -> C3
....
Điều gì xảy ra khi có sự thay đổi từ người dùng 1 đối với nhân tố A?

Nếu làm theo cách thông thường, chúng ta sẽ mở đoạn code của A để chỉnh sửa theo đúng yêu cầu người sử dụng. Điều này không sai. NHƯNG

Điều gì xảy ra nếu có một người sử dụng thứ 2 yêu cầu logic là: A4 + B1 -> C4

Điều gì xảy ra nếu có một người sử dụng thứ 3 yêu cầu logic là: A5+ B1 -> C5

Lúc này chúng ta lại nghĩ đến việc phân loại các trường hợp trong code của A để đáp ứng cho từng user, kết quả là độ phức tạp trong A sẽ tăng dần lên và đến một mức độ nào đó sẽ không thể kiểm soát được.

NGUYÊN LÝ ĐÓNG - MỞ ra đời để giải quyết khó khăn trên trong môi trường phải giải quyết sự đa dạng về yêu cầu đối với 1 entity. Chúng ta nên hạn chế, thậm chí không nên chỉnh sửa code trong 1 entity nào đó khi có thay đổi về yêu cầu mà nên kế thừa nó theo các tạo 1 entity có cùng loại nhưng khác phần xử lý cần phải đáp ứng yêu cầu người dùng.

3. Ví dụ


Không có nhận xét nào:

Đăng nhận xét