Hỏi đáp

Loose Coupling Là Gì ? Định Nghĩa Và Giải Thích Ý Nghĩa Spring Ơi, Mình Học Từ Đâu Thế – viettingame

Low coupling và high cohesion là 2 thuộc tính đi cùng với nhau như là tiềm năng cần đạt được trong thiết kế, trong nội dung bài viết này, cùng tìm hiểu xem chúng là gì, làm sao để đạt được và tránh những lỗi liên quan tới coupling và cohesion lúc thiết kế ứng dụng.

Đang xem: Loose coupling là gì

COUPLING

Low couplingloose coupling hay high coupling và tight coupling, ắt hẳn ai trong chúng ta lúc học về những nguyên tắc lập trình căn bạn dạng đều biết về quan điểm coupling này. Coupling đề cập tới vấn đề phụ thuộc lẫn nhau giữa những component. Low coupling, loose coupling tức là những component ít tùy theo nhau, sự thay đổi trong component này ít lúc, hoặc ko tác động tới component kia. trái lại, high coupling và tight coupling cho thấy những component phụ thuộc nhiều vào nhau, lúc thay đổi 1 component thì những component kia đều bị tác động và với thời gian làm việc phải thay đổi theo. Tất nhiên, low coupling là tiềm năng chúng ta cần nhắm tới để đảm bảo cho khối hệ thống ít bị tác động lúc với thay đổi và do đó, tăng vận tốc triển khai công việc và duy trì.

*

Nếu chúng ta nhìn vào hình trên, nó cho chúng ta thấy một mối liên hệ giữa hai class được gọi là tight coupling. Class1 ở trên tạo ra những đối tượng người dùng của Class2 trực tiếp, và thậm chí là đi tới những hình thành viên và truy vấn vào. Điều này làm cho nó rất tùy theo Class2. Điều gì sẽ xẩy ra nếu chúng ta quyết định rằng chúng ta muốn thêm tham số thêm vào trong constructor của Class2 và đặt mặc định là private? Sau đó, chúng ta phải thay đổi mọi cách sử dụng Class2 ở mọi nơi. Ko sang trọng lắm, heh? Thậm chí là một đợt đau đầu rất rộng và là một trong những vấn đề trước nhất trong thiết kế.

Dưới phía trên là ví dụ bằng code:

public class ClassA { private boolean attributeA; public int methodA() { if(attributeA) { return new ClassB().attributeB; } return -1; } public String getValue() { return new ClassB().getValue(); }}public class ClassB { public int attributeB; public String getValue() { return “Heh?!?”; }}

MỘT SỐ GIẢI PHÁP

DEPENDENCY INVERSION

Ví dụ trong Java, ta sẽ thêm một interface. Này là cách Class1 sẽ chỉ tùy theo interface đó, chứ ko phải là implementation thực tiễn của Class2, do đó giảm thiểu và hạn chế sự phụ thuộc trực tiếp giữa 2 class với nhau.

Xem thêm: Trò Chơi Bán Hàng Ăn Thời gian nhanh 24H, trò chơi Cửa Hàng Ăn Thời gian nhanh 24H

LAW OF DEMETER (DON’T TALK TO STRANGERS!)

Lợi điểm của Law of Demeter là nó giúp khối hệ thống của con người đứng vững trước những thay đổi bằng phương pháp hạn chế coupling hay còn gọi là cách design loose coupling, mọi sự thay đổi sẽ là nhỏ nhất nếu thậm chí.

COHESION

Còn high cohesion (trái ngược với nó là low cohesion) là gì? Lúc nói đến việc cohesion chúng ta nghĩ tới trọng trách của từng module. Trách nhiệm của từng module càng rõ rệt và tách biệt thì cohesion càng tốt (high cohesion), và này là tiềm năng cần đạt tới lúc thiết kế. Trình bày bằng code với lẽ sẽ không còn rõ rệt, hãy xem xét câu dưới phía trên:

Tại kỳ họp Quốc hội thứ năm, lúc thảo luận về quản lý và vận hành unique vệ sinh an toàn và đáng tin cậy thực phẩm với vị đại biểu Quốc hội đã ví việc với tới 5 bộ phụ trách chính như vậy tương tự như “nhiều sãi không một ai ngừng hoạt động chùa”.Vì thế, làm rõ trách nhiệm của từng cơ quan quản lý và vận hành Nhà nước về an toàn và đáng tin cậy thực phẩm là một yêu cầu được nhấn mạnh lúc xây dựng Dự Luật Đáng tin cậy thực phẩm.

Nếu xem Dự Luật Đáng tin cậy thực phẩm là một feature thì rõ rệt nó đang không đạt được tính high cohesion trong thiết kế vì thế nó phải dàn trải và tùy theo rất nhiều module (5 bộ, phòng ban) không giống nhau. Do đó, lúc cần chỉnh sửa bổ sung cập nhật dự luật sẽ rất khó khăn vì thế phải sửa 1 lúc 5 module, mà các bạn thấy đó, điều đó rõ rệt là rất khó. Nếu quy trách nhiệm xây dựng bộ luật này cho một bộ ban duy nhất thì sẽ hạn chế tính phức tạp và do đó, tăng tính cohesion. High cohesion thường đạt được nếu ta tuân thủ theo nguyên tắc đơn nhiệm (Single responsibility principle), mỗi module, lúc đó chỉ đảm nhiệm một trọng trách duy nhất, ko hơn ko tầm thường, và không tồn tại chuyện 2 module cùng làm một trọng trách, một tính năng.

Xem thêm: Món Tré Là Gì – Tré Huế Ăn Với Gì Ngon Nhất

Tới phía trên chắc ai cũng hiểu được rồi đúng không nào? Ít nhất là về mặt lý thuyết, hãy xem xét bảng sau trước lúc mình đi vào những dẫn giải tiếp theo.

Về Viettingame.com

Viettingame.com - Chuyên trang web tổng hợp những thông tin hữu ích trên internet như thông tin về game, tin tổng hợp
Xem tất cả các bài viết của Viettingame.com →

Trả lời

Email của bạn sẽ không được hiển thị công khai.