LOOSELY COUPLED LÀ GÌ

  -  

Low coupling và high cohesion là 2 ở trong tính đi cùng với nhau như là mục tiêu cần đã có được trong thiết kế, trong nội dung bài viết này, cùng khám phá xem bọn chúng là gì, làm sao để đạt được và tránh giảm các lỗi liên quan đến coupling và cohesion khi xây đắp phần mềm.

Bạn đang xem: Loosely coupled là gì

COUPLING

Low couplingloose coupling hay high coupling và tight coupling, ắt hẳn ai trong bọn họ khi học tập về các nguyên lý thiết kế căn bản đều biết về tư tưởng coupling này. Coupling đề cập đến vấn đề phụ thuộc lẫn nhau giữa các component. Low coupling, loose coupling có nghĩa là các component ít phụ thuộc vào nhau, sự thay đổi trong component này không nhiều khi, hoặc không ảnh hưởng đến component kia. Ngược lại, high coupling cùng tight coupling cho biết thêm các component nhờ vào nhiều vào nhau, khi thay đổi 1 component thì các component kia rất nhiều bị ảnh hưởng và có khả năng phải biến hóa theo. Vớ nhiên, low coupling là mục tiêu họ cần tìm hiểu để bảo đảm an toàn cho hệ thống ít bị ảnh hưởng khi có thay đổi và vì chưng đó, tăng vận tốc thực hiện quá trình và bảo trì.


*
*

Nếu bọn họ nhìn vào hình trên, nó cho chúng ta thấy một mối tương tác giữa nhị class được điện thoại tư vấn là tight coupling. Class1 ngơi nghỉ trên tạo ra các đối tượng người sử dụng của Class2 trực tiếp, và thậm chí là đi đến các trở thành viên và truy cập vào. Điều này tạo cho nó rất nhờ vào vào Class2. Điều gì sẽ xảy ra nếu bọn họ quyết định rằng họ muốn thêm tham số cấp dưỡng trong constructor của Class2 và đặt khoác định là private? Sau đó, bọn họ phải biến hóa mọi cách sử dụng Class2 ở rất nhiều nơi. Không rất đẹp lắm, heh? hoàn toàn có thể là một đợt đau đầu rất lớn và là giữa những vấn đề trước tiên trong thiết kế.

Dưới đấy là ví dụ bởi 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. Đó là phương pháp Class1 vẫn chỉ dựa vào vào interface đó, chứ chưa hẳn là implementation thực tiễn của Class2, vì vậy giảm thiểu sự phụ thuộc vào trực tiếp giữa 2 class với nhau.

Xem thêm: Ghé Chơi ' Nhà Của Pao Hà Giang Khách Du Lịch Nên Tránh, Tham Quan Nhà Của Pao Tại Hà Giang

LAW OF DEMETER (DON’T TALK lớn STRANGERS!)

Lợi điểm của Law of Demeter là nó giúp hệ thống của bọn họ đứng vững vàng trước hầu hết thay đổi bằng cách giảm coupling hay còn gọi là cách thiết kế loose coupling, hầu hết sự thay đổi sẽ là bé dại nhất nếu có thể.

COHESION

Còn high cohesion (trái ngược với nó là low cohesion) là gì? Khi kể đến cohesion họ nghĩ đến trọng trách của từng module. Trọng trách của từng module càng ví dụ và tách biệt thì cohesion càng tốt (high cohesion), cùng đó là mục tiêu cần đạt mức khi thiết kế. Giải thích bằng code chắc hẳn rằng sẽ ko rõ ràng, hãy để ý câu dưới đây:

Tại kỳ họp Quốc hội sản phẩm năm, khi trao đổi về thống trị chất lượng vệ sinh bình an thực phẩm có vị đbqh đã ví bài toán có tới 5 bộ chịu trách nhiệm chính như vậy cũng tương tự “nhiều sãi không ai tạm dừng hoạt động chùa”.Bởi thế, hiểu rõ trách nhiệm của từng cơ quan cai quản Nhà nước về an ninh thực phẩm là một trong yêu ước được nhấn mạnh vấn đề khi kiến thiết Dự Luật bình yên thực phẩm.

Nếu coi Dự Luật an ninh thực phẩm là 1 feature thì cụ thể nó đã không đạt được tính high cohesion trong xây đắp vì nó phải trang trải và dựa vào vào rất nhiều module (5 bộ, phòng ban) khác nhau. Bởi vì đó, khi phải chỉnh sửa bổ sung cập nhật dự luật sẽ rất khó khăn vì buộc phải sửa 1 cơ hội 5 module, mà bạn thấy đó, điều đó rõ ràng là vô cùng khó. Nếu quy nhiệm vụ xây dựng bộ phép tắc này mang đến một cỗ ban nhất thì sẽ giảm tính phức tạp và bởi đó, tăng tính cohesion. High cohesion thường giành được nếu ta vâng lệnh theo nguyên tắc solo nhiệm (Single responsibility principle), từng module, lúc đó chỉ đảm nhận một nhiệm vụ duy nhất, không rộng không kém, và không tồn tại chuyện 2 module cùng làm một nhiệm vụ, một tính năng.

Xem thêm: Phát Sốt Với Cung Đường Hoa Phượng Tím Ở Đà Lạt Đẹp Đến Mê Hồn

Đến trên đây chắc ai cũng hiểu được rồi đúng không? Ít duy nhất là về phương diện lý thuyết, hãy để mắt tới bảng sau trước khi mình đi vào các dẫn giải tiếp theo.