Loosely Coupled Là Gì, Kiến Thức Chi Tiết Về Loose Coupling

Low coupling và high cohesion là 2 thuộc tính đi cùng nhau như là kim chỉ nam cần đạt được trong thiết kế, trong bài viết này, cùng mày mò xem chúng là gì, làm thế nào để đạt được và nên tránh các lỗi tương quan đến coupling và cohesion khi xây đắp phần mềm.Bạn vẫn 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ý lập trình căn bản đều biết về có mang coupling này. Coupling đề cập đến vấn đề phụ thuộc vào lẫn nhau giữa các component. Low coupling, loose coupling tức là các component ít nhờ vào vào nhau, sự đổi khác trong component này ít khi, hoặc không tác động đến component kia. Ngược lại, high coupling cùng tight coupling cho biết thêm các component dựa vào nhiều vào nhau, khi đổi khác 1 component thì những component kia số đông bị tác động và có khả năng phải biến hóa theo. Vớ nhiên, low coupling là mục tiêu chúng ta cần tìm hiểu để bảo đảm an toàn cho khối hệ thống ít bị tác động khi có biến đổi và bởi đó, tăng tốc độ thực hiện quá trình và bảo trì.

Bạn đang xem: Loosely coupled là gì, kiến thức chi tiết về loose coupling


*

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

Dưới đó 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

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

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

Xem thêm: Các Loại Nước Hoa Thơm Lâu Cho Nữ Được Review Tốt Nhất, Đi Tìm 5 Chai Nước Hoa Nữ Thơm Lâu Nhất

COHESION

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

Tại kỳ họp Quốc hội đồ vật năm, khi bàn bạc về thống trị chất lượng vệ sinh bình yên thực phẩm tất cả vị đại biểu chính phủ đã ví việc có tới 5 bộ chịu trách nhiệm chính như vậy cũng như “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 quản lý Nhà nước về an ninh thực phẩm là 1 yêu cầu được nhấn mạnh vấn đề khi desgin Dự Luật an toàn thực phẩm.

Nếu xem Dự Luật an toàn thực phẩm là một feature thì ví dụ nó đã không đạt được xem high cohesion trong thi công vì nó phải trang trải và phụ thuộc vào rất nhiều module (5 bộ, phòng ban) không giống nhau. Vày đó, khi đề xuất chỉnh sửa bổ sung dự luật sẽ rất khó khăn vì phải sửa 1 lúc 5 module, mà bạn thấy đó, điều đó ví dụ là hết sức khó. Nếu quy trọng trách xây dựng bộ phép tắc này cho một cỗ ban độc nhất vô nhị thì sẽ giảm tính phức hợp và do đó, tăng tính cohesion. High cohesion thường đã có được nếu ta tuân thủ theo nguyên tắc đối chọi nhiệm (Single responsibility principle), mỗi 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 có tác dụng một nhiệm vụ, một tính năng.

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