Trong việc Design Parttern cho OOPhường tín đồ ta bàn về vấn đề xây dựng một pattern làm thế nào để lớp nhỏ thừa kế lớp phụ thân tuy vậy tự thải trừ phần đa method nhưng mà nó không mong muốn. Điều kia Có nghĩa là lớp nhỏ ko tuân thủ nguyên ổn tắc định trước, Tức là nó không tuân thủ một giữa những phương pháp cơ phiên bản của xây cất hướng đối tượng người tiêu dùng (OOD – Object oriented design) là Liscov substitution principle.

Bạn đang xem: Ood là gì


Điều kia cho thấy thêm Lúc xây đắp, tra cứu giải pháp cho 1 vụ việc làm sao đó, vấn đề nắm rõ các nguyên lí cơ bản của OOD là hết sức đặc biệt quan trọng. Bài này xin trình làng về 5 hình thức cơ phiên bản của OOD là:

Open closedLiskov substitutionDependency inversionInterface segregationSingle responsibility

mở cửa closed

Ivar Jacobson từng nói: “Để kiến tạo các khối hệ thống vĩnh viễn, đề nghị luôn luôn trọng tâm niệm rằng các khối hệ thống luôn luôn đổi khác trong quá trình sử dụng”. (All systems change during their life cycles. This must be borne in mind when developing systems expected lớn last longer than the first version.”). Năm 1988, Bertrvà Meyer chỉ dẫn kim chỉ nam để tiến hành điều mà Ivar Jacobson nói trên nhưng sau này vươn lên là ngulặng lí open-closed khét tiếng. Đó là: SOFTWARE ENTITIES (CLASSES, MODULES, FUNCTIONS, ETC.) SHOULD BE OPEN FOR EXTENSION, BUT CLOSED FOR MODIFICATION. Các công tác vận dụng nguim lí open-cthảm bại được biến hóa bằng phương pháp thêm code bắt đầu chđọng chưa hẳn sửa code gồm sẵn. Bằng bí quyết này, tránh được biến đổi dây chuyền vào tổng thể lịch trình. Tuy nhiên, mỗi entity của chương trình có thể đóng góp với chuyển đổi này tuy thế lại ko đóng cùng với chuyển đổi nào kia khác. Do đó, tính đóng này chỉ với tương đối cùng nhiệm vụ của bạn xây đắp là với mỗi đặc thù của chương trình, ưu tiên đóng các trực thuộc tính dễ thay đổi duy nhất. Để “đóng” những entity của chương trình, rất có thể sử dụng chiến thuật abstraction, data driven, .. Open-closed là nguyên ổn li trung vai trung phong, vô cùng đặc biệt trong kiến tạo hướng đối tượng vì thiết yếu ngulặng lí này làm cho thiết kế phía đối tượng người sử dụng gồm tính tái áp dụng (reusability) với dễ gia hạn (maintainability). Tham mê khảo thêm ở đây với tại chỗ này.

Liskov substitution

Nguyên lí này được phát biểu nlỗi sau:


FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES WITHOUT KNOWING IT.
Tức là buổi giao lưu của những function tất cả thực hiện reference hay pointer cho tới object của lớp thân phụ cần được bảo đảm là không biến thành ảnh hưởng Khi sửa chữa thay thế reference hay pointer tới object của lớp thân phụ vị reference hay pointer tới object của lớp nhỏ và function kia ko cần phải biết về sự trường tồn của lớp nhỏ. Khi kia, những virtual member functions làm việc lớp phụ thân cũng phải có sinh hoạt lớp bé, cùng yêu cầu tiến hành một các bước tất cả nghĩa. Nếu nguim lí này bị vi phạm luật, function gồm sử dụng reference hay pointer cho tới object của lớp thân phụ cần chất vấn vẻ bên ngoài của object để bảo đảm chương trình hoàn toàn có thể chạy đúng, và bài toán này vi phạm luật nguim lí open-closed nhắc tới ở bên trên. Tham mê khảo thêm ở chỗ này và ở chỗ này.

Dependency inversion

Việc áp dụng nhị nguyên ổn lí open-closed với Liskov substitute một biện pháp nghiêm ngặt hoàn toàn có thể bao quát trở thành nguyên lí depndency inversion được phát biểu nhỏng sau:

HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES. BOTH SHOULD DEPEND UPON ABSTRACTIONS.
ABSTRACTIONS SHOULD NOT DEPEND UPON DETAILS. DETAILS SHOULD DEPEND UPON ABSTRACTION.

Xem thêm: Là Gì? Nghĩa Của Từ Hồng Trần Là Gì ? Nghĩa Của Từ Hồng Trần Trong Tiếng Việt

Thực hiện tại một bằng cách dùng abstract layer nlỗi hình bên dưới.


*
Tmê mệt khảo thêm ở trong phần này, vị trí tê và vị trí đó.

Interface segregation

Nguyên lí này được tuyên bố nhỏng sau:


lúc một client bị xay buộc phải nhờ vào vào số đông interface mà nó ko áp dụng thì nó sẽ ảnh hưởng chịu ảnh hưởng vào đầy đủ đổi khác của interface kia. Chúng ta cần được rời vấn đề đó các tuyệt nhất có thể bằng cách chia nhỏ tuổi interface. Tsi khảo thêm ở đây.

Single responsibility

Ngulặng lí này được tuyên bố như sau:


Tmê mệt khảo thêm ở chỗ này cùng ở chỗ này. Chú ý: để đọc bài này, cần phải có kỹ năng cơ bạn dạng về thiết kế hướng đối tượng người sử dụng, nhất là các tư tưởng encapsulation, inheritance, polimorphism.
Bài viết liên quan

Trả lời

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 *