Dự án hiện tại của chúng tôi đã gặp sự cố phụ thuộc vòng tròn. Hợp lý kinh doanh của chúng tôi đang sử dụng các lớp và các phương thức tĩnh từ assembly SharedLibrary của chúng tôi. SharedLibrary chứa một bó toàn bộ các hàm trợ giúp, chẳng hạn như lớp SQL Reader, Enumerators, Global Variable, Error Handling, Logging và Validation.Giải pháp phụ thuộc tròn
Thư viện được chia sẻ cần quyền truy cập vào đối tượng Doanh nghiệp, nhưng đối tượng Doanh nghiệp cần quyền truy cập vào SharedLibrary. Các nhà phát triển cũ đã giải quyết được mùi mã hiển nhiên này bằng cách sao chép chức năng của các đối tượng nghiệp vụ trong thư viện được chia sẻ (rất chống DRY). Tôi đã dành một ngày để cố gắng đọc về các lựa chọn của mình để giải quyết vấn đề này nhưng tôi đã đánh một kết thúc chết.
Tôi mở cho ý tưởng thiết kế lại kiến trúc, nhưng chỉ là phương sách cuối cùng. Vậy làm thế nào tôi có thể có một Thư viện trợ giúp chia sẻ có thể truy cập các đối tượng nghiệp vụ, với các đối tượng kinh doanh vẫn đang truy cập Thư viện trợ giúp được chia sẻ?
Câu hỏi rõ ràng là: Tại sao Thư viện được chia sẻ cần quyền truy cập vào Đối tượng kinh doanh? Nếu bạn có thể trả lời, bạn sẽ có một giải pháp. – Aaronaught
SharedLibrary có một lớp biến toàn cục trừu tượng chứa đầy các thuộc tính tĩnh. Các thuộc tính này được tạo ra từ các giá trị từ cơ sở dữ liệu do đó cần cho các đối tượng nghiệp vụ, đây chỉ là một ví dụ của nhiều đối tượng. Và tất nhiên các đối tượng kinh doanh cần truy cập vào các hằng số đó. – gfoley
Đây là lý do tại sao tôi không bao giờ sử dụng các thuật ngữ mơ hồ như "được chia sẻ" để mô tả một thư viện. Nó thực sự làm gì? Những gì bạn gọi là một thư viện được chia sẻ rõ ràng có quá nhiều trách nhiệm, và có lẽ thư viện đối tượng nghiệp vụ cũng vậy. Thông thường, các giải pháp này được giải quyết bằng cách đặt các lớp/giao diện * thực sự độc lập vào thư viện của riêng chúng. – Aaronaught