LOOSELY COUPLED LÀ GÌ

     

Low coupling và high cohesion là 2 ở trong 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 tò 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ới cohesion khi xây dựng phần mềm.Bạn vẫn xem: Loose coupling là gì

COUPLING

Low couplingloose coupling hay high coupling và tight coupling, ắt hẳn ai trong họ khi học về các nguyên lý thiết kế căn bản đều biết về định nghĩa coupling này. Coupling đề cập mang lại 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 vào nhau, sự đổi khác 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 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 đông đảo bị tác động và có khả năng phải đổi khác theo. Tất nhiên, low coupling là mục tiêu họ cần đào bới để bảo đảm cho hệ thống ít bị ảnh hưởng khi có biến hóa và bởi vì đó, tăng vận tốc thực hiện các bước và bảo trì.

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


*

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 nghỉ ngơi trên tạo ra các đối tượng người dùng của Class2 trực tiếp, và thậm chí là đi đến các biến thành viên và truy vấn 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 chúng ta quyết định rằng chúng ta muốn thêm tham số phân phối trong constructor của Class2 với đặt mang định là private? Sau đó, họ phải biến đổi mọi cách sử dụng Class2 ở đều nơi. Không đẹp nhất lắm, heh? có thể là một cơn đau đầu rất to lớn và là trong số những vấn đề trước tiên trong thiết kế.

Dưới đấy 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 to STRANGERS!)

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

Xem thêm: New Số Dư Tài Khoản ( Account Balance Là Gì ? Account Balance Là Gì

COHESION

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

Tại kỳ họp Quốc hội trang bị năm, khi bàn bạc về làm chủ chất lượng vệ sinh an ninh thực phẩm bao gồm vị đại biểu quốc hội đã ví vấn đề có tới 5 bộ phụ trách chính như vậy cũng giống như “nhiều sãi ko ai đóng cửa 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ề an toàn thực phẩm là 1 trong những yêu mong được nhấn mạnh vấn đề khi kiến tạo Dự Luật bình an thực phẩm.

Nếu xem Dự Luật bình an thực phẩm là 1 trong feature thì cụ thể nó đã không đạt được xem high cohesion trong thi công vì nó phải giàn trải và dựa vào vào không ít module (5 bộ, chống ban) khác nhau. Vì chưng đó, khi bắt buộc chỉnh sửa bổ sung 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à hết sức khó. Trường hợp quy trách nhiệm xây dựng bộ hiện tượng này mang đến một cỗ ban độc nhất thì sẽ giảm tính tinh vi và bởi vì đó, tăng tính cohesion. High cohesion thường giành được nếu ta tuân hành theo nguyên tắc đối chọi nhiệm (Single responsibility principle), từng module, khi đó chỉ đảm nhiệm một nhiệm vụ duy nhất, không hơn không kém, và không tồn tại chuyện 2 module cùng làm cho một nhiệm vụ, một tính năng.

Xem thêm: Trầm Trồ Với 2 Cách Làm Mứt Dừa Sữa Tươi Cực Ngon Cho Ngày Tết

Đến phía trên chắc ai ai cũng hiểu được rồi đúng không? Ít độc nhất là về phương diện 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.