LOOSE COUPLING LÀ GÌ

     

Low coupling và high cohesion là 2 trực thuộc tính đi với nhau như là phương châm cần đã có được trong thiết kế, trong bài viết này, cùng tìm hiểu xem bọn chúng là gì, làm sao để đạt được và né tránh các lỗi liên 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 chúng ta khi học tập về các nguyên lý lập trình căn bản đều biết về khái niệm coupling này. Coupling đề cập đến vấn đề nhờ vào 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 vào nhau, sự biến đổ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 và tight coupling cho thấy các component phụ thuộc nhiều vào nhau, khi biến hóa 1 component thì các component kia đều bị ảnh hưởng và có chức năng phải biến đổi theo. Vớ nhiên, low coupling là mục tiêu bọn họ cần hướng đến để bảo vệ cho khối hệ thống ít bị ảnh hưởng khi có biến đổi và vì đó, tăng vận tốc thực hiện quá trình và bảo trì.

Bạn đang xem: Loose coupling là gì


*

Nếu chúng ta nhìn vào hình trên, nó cho bọn họ thấy một mối tương tác giữa hai class được call là tight coupling. Class1 sinh sống trên tạo ra các đối tượng người tiêu dùng của Class2 trực tiếp, và thậm chí còn là đi cho 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 Class2. Điều gì sẽ xẩy ra nếu bọn họ quyết định rằng chúng ta muốn thêm tham số sản xuất trong constructor của Class2 với đặt mặc định là private? Sau đó, chúng ta phải chuyển đổi mọi cách áp dụng Class2 ở hồ hết nơi. Không rất đẹp lắm, heh? rất có thể là một cơn đau đầu rất cao và là trong 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

LAW OF DEMETER (DON’T TALK khổng lồ 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 nhiều thay đổi bằng cách giảm coupling hay còn gọi là cách thiết kế loose coupling, phần lớn sự biến hóa sẽ là bé dại nhất nếu có thể.

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

COHESION

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

Tại kỳ họp Quốc hội sản phẩm năm, khi trao đổi về quản lý chất lượng vệ sinh bình an thực phẩm gồm vị đbqh đã ví câu hỏi 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 đóng cửa chùa”.Bởi thế, nắm rõ trách nhiệm của từng cơ quan làm chủ Nhà nước về an ninh thực phẩm là 1 yêu ước được nhấn mạnh khi tạo 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ì cụ thể nó đã 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 không ít module (5 bộ, chống ban) không giống nhau. Vị đó, khi cần chỉnh sửa bổ sung cập nhật dự luật sẽ khá khó khăn vì đề xuất sửa 1 thời gian 5 module, mà chúng ta thấy đó, điều đó cụ thể là hết sức khó. Nếu như quy trọng trách xây dựng bộ phép tắc này cho một cỗ ban nhất thì sẽ bớt tính tinh vi và vày đó, tăng tính cohesion. High cohesion thường có được nếu ta vâng lệnh theo nguyên tắc đối chọi nhiệm (Single responsibility principle), từng module, khi ấy chỉ phụ trách 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: Intrinsic Value Là Gì - Thuật Ngữ Ifrs: Intrinsic Value

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