LOOSELY COUPLED LÀ GÌ

  -  

Low coupling và high cohesion là 2 trực thuộc tính đi cùng nhau như là phương châm cần giành đượ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 giảm các lỗi tương quan đến coupling và cohesion khi xây dựng 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 về các nguyên lý xây dựng căn bản đều biết về khái niệm coupling này. Coupling đề cập cho vấn đề phụ thuộc lẫn nhau giữa những component. Low coupling, loose coupling tức 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 tác động đến component kia. Ngược lại, high coupling với tight coupling cho biết các component dựa vào nhiều vào nhau, khi biến đổi 1 component thì những component kia phần đông bị tác động và có khả năng phải thay đổi theo. Tất nhiên, low coupling là mục tiêu bọn họ cần tìm hiểu để bảo đảm an toàn cho khối hệ thống ít bị ảnh hưởng khi có biến đổi và do đó, tăng tốc độ thực hiện các bước 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 contact giữa hai class được call là tight coupling. Class1 nghỉ ngơi trên tạo ra các đối tượng của Class2 trực tiếp, và thậm chí còn là đi cho các trở thành viên và truy vấn vào. Điều này khiến cho nó rất phụ thuộc vào Class2. Điều gì sẽ xẩy ra nếu chúng ta quyết định rằng họ muốn thêm tham số sản xuất trong constructor của Class2 và đặt khoác định là private? Sau đó, chúng ta phải chuyển đổi mọi cách thực hiện Class2 ở số đông nơi. Không rất đẹp lắm, heh? có thể là một lần đau đầu rất to lớn và là trong những vấn đề đầu 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 đang thêm một interface. Đó là cách Class1 vẫn chỉ nhờ vào vào interface đó, chứ chưa phải là implementation thực tiễn của Class2, cho nên 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: 72 Con Quỷ Của Vua Solomon Là Gì Trong Tiếng Việt? Nghĩa Của Từ Solomon Trong Tiếng Việt

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

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

COHESION

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

Tại kỳ họp Quốc hội thiết bị năm, khi luận bàn về quản lý chất lượng vệ sinh bình an thực phẩm có vị đại biểu qh đã ví vấ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 ko ai ngừng hoạt động chùa”.Bởi thế, làm rõ trách nhiệm của từng cơ quan làm chủ Nhà nước về bình an thực phẩm là một trong những yêu cầu được nhấn mạnh khi desgin Dự Luật an ninh thực phẩm.

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

Xem thêm: " Mắt Chữ A Mồm Chữ O, Mồm Chữ A' Khi Thấy Những Nhà Vệ Sinh Độc Đáo

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