Low coupling và high cohesion là 2 thuộc tính đi với nhau như là kim chỉ nam phải có được vào xây cất, vào bài viết này, thuộc tò mò xem chúng là gì, làm thế nào nhằm có được và nên tránh các lỗi liên quan đến coupling cùng cohesion Khi thi công ứng dụng.

Bạn đang xem: Cohesion là gì

COUPLING

Low couplingloose coupling hay high coupling và tight coupling, ắt hẳn ai vào bọn họ khi tham gia học về các nguyên tắc lập trình sẵn cnạp năng lượng bản số đông biết về có mang 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à những component ít phụ thuộc vào sát vào nhau, sự đổi khác trong component này hiếm khi, hoặc không tác động mang lại component kia. trái lại, high coupling và tight coupling cho biết thêm những component phụ thuộc nhiều vào với nhau, Khi thay đổi 1 component thì các component kia đông đảo bị ảnh hưởng cùng có công dụng nên biến hóa theo. Tất nhiên, low coupling là phương châm chúng ta phải tìm hiểu để bảo đảm mang lại hệ thống ít bị tác động khi có biến đổi với cho nên, tăng tốc độ tiến hành công việc với duy trì.


*

Nếu họ chú ý vào hình bên trên, nó mang đến bọn họ thấy một mối liên hệ thân hai class được điện thoại tư vấn là tight coupling. Class1 ngơi nghỉ trên tạo thành các đối tượng người tiêu dùng của Class2 thẳng, với thậm chí là đi mang lại những trở thành viên cùng truy vấn vào. Điều này khiến cho nó hết sức phụ thuộc vào vào Class2. Điều gì sẽ xảy ra trường hợp bọn họ đưa ra quyết định rằng họ mong thêm tham số thêm vào trong constructor của Class2 cùng đặt mặc định là private? Sau kia, chúng ta đề xuất thay đổi hầu hết biện pháp thực hiện Class2 ngơi nghỉ phần lớn địa điểm. Không rất đẹp lắm, heh? Có thể là một cơn chóng mặt không hề nhỏ và là 1 trong những trong những vụ việc đầu tiên 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

DEPENDENCY INVERSION

lấy ví dụ trong Java, ta đang thêm 1 interface. Đó là biện pháp Class1 đã chỉ phụ thuộc vào vào interface kia, chứ đọng chưa hẳn là implementation thực tế của Class2, cho nên vì vậy giảm tphát âm sự dựa vào thẳng giữa 2 class cùng nhau.

Xem thêm: Phó Giáo Sư Tiếng Anh Là Gì, Phó Giáo Sư Tiến Sĩ Tên Tiếng Anh Là Gì

LAW OF DEMETER (DON’T TALK TO STRANGERS!)

Lợi điểm của Law of Demeter là nó giúp hệ thống của chúng ta đứng vững trước phần nhiều biến đổi bằng cách bớt coupling tuyệt có cách gọi khác là biện pháp thiết kế loose coupling, các sự thay đổi sẽ là nhỏ dại độc nhất vô nhị trường hợp có 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 chúng ta nghĩ về mang đến nhiệm vụ của từng module. Nhiệm vụ của từng module càng cụ thể cùng tách bóc biệt thì cohesion càng cao (high cohesion), và sẽ là phương châm đề xuất đạt tới Lúc thi công. Giải ưng ý bằng code chắc hẳn rằng sẽ không còn cụ thể, hãy chăm chú câu bên dưới đây:

Tại kỳ họp Quốc hội vật dụng năm, lúc bàn thảo về cai quản chất lượng dọn dẹp và sắp xếp bình yên thực phđộ ẩm gồm vị đại biểu Quốc hội đã ví bài toán bao gồm tới 5 cỗ Chịu trách rưới nhiệm thiết yếu điều đó cũng tương tự “những sãi không có ai đóng cửa chùa”.Bởi nuốm, hiểu rõ trách nát nhiệm của từng cơ quan quản lý Nhà nước về bình yên thực phđộ ẩm là một trong đề nghị được nhấn mạnh Khi xuất bản Dự Luật An toàn thực phẩm.

Nếu coi Dự Luật An toàn thực phđộ ẩm là 1 trong những feature thì cụ thể nó đã không đạt được tính high cohesion vào xây cất vì nó nên dàn trải với phụ thuộc vào rất nhiều module (5 cỗ, chống ban) không giống nhau. Do đó, Khi đề xuất chỉnh sửa bổ sung dự lao lý sẽ rất trở ngại vì chưng phải sửa 1 thời gian 5 module, cơ mà chúng ta thấy kia, điều ấy rõ ràng là khó. Nếu quy trách rưới nhiệm phát hành bộ nguyên tắc này cho một cỗ ban tốt nhất thì đang sút tính tinh vi cùng vì vậy, tăng tính cohesion. High cohesion hay đã đạt được nếu như ta tuân hành theo lý lẽ 1-1 nhiệm (Single responsibility principle), mỗi module, lúc ấy chỉ phụ trách một trách nhiệm tốt nhất, không rộng không thua kém, cùng không có chuyện 2 module thuộc làm một nhiệm vụ, một chức năng.

Xem thêm: Đuôi Svg Là Gì ? Tại Sao Nên Dùng Svg? File Svg Là Gì

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

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *