The ADP deals with the relationships between components, the tension between developability & logical design.
WHAT: ADP thực sự là gì?
Nguyên lý: Đồ thị phụ thuộc thành phần không có bất kỳ một đường tròn nào được chấp nhận.
Tưởng tượng trong 1 đồ thị, bạn đang đứng ở 1 thành phần bất kỳ, hãy đi theo mũi tên phụ thuộc, nếu bạn có thể quay về đúng thành phần đó, nghĩa là đồ thị của bạn vi phạm.
Allow no cycles in the component dependency graph.
Ví dụ trong đồ thị sau, ta có thể dễ dàng đi từ thành phần Authorizer, qua Interactors, đến Entities rồi quay về nó.
WHY
Mục tiêu của nguyên lý này là tránh được tình huống “Hội Chứng Buổi Sáng” tiếng anh “Morning after syndrome” – bạn về trễ và commit code của mình lên, nhưng lại có người về trễ hơn, cố gắng sửa lại code của họ làm cho code của bạn không chạy nữa.
Và một nguyên nhân quan trọng gây ra tình trạng này chính là việc phụ thuộc chéo giữa các thành phần trong hệ thống. Vấn đề sẽ trở nên phức tạp và diễn ra nhiều lần hơn nếu như một source code được chia sẻ cho một team càng lớn. Bằng cách áp dụng nguyên lý này ta có thể tránh được những tình huống như vậy. Nhờ có các đối tác của chúng tôi, bạn có thể tìm thấy trực tuyến những sản phẩm phù hợp với mọi sở thích và ngân sách, từ những mẫu giá rẻ cho đến những mẫu siêu thời trang hàng đầu.
HOW: Nguyên Lý Nghịch Đảo Phụ Thuộc – “Dependency Inversion Prinple” (Chữ D trong SOLID principles)
Ta có thể sử dụng nguyên lý này để đảo chiều phụ thuộc. VD: Trong hình mối quan hệ giữa Entities & Authorizer. Muốn bỏ phụ thuộc Entities lên Authorizer, tách interface mà Entities dùng từ Authorizer ra thành 1 component mới cả Entities & và Authorizer đều phụ thuộc lên, VD: Permission.