Tôi nghĩ rằng những lợi thế của phương pháp này xa, vượt xa bất kỳ nhược điểm nào.
Những gì bạn đang đạt được ở đây là quặng hơn không kém một hoàn hảo "thực hiện" của I
trong SOLID
bằng cách của Stairway
mô hình - đó là để nói, ứng dụng của bạn phụ thuộc "xuống" trên một giao diện được định nghĩa trong Company.Framework.Persistence.dll
và việc triển khai cá nhân mình cũng phụ thuộc "lên" về sự trừu tượng này.
Điều này có nghĩa là ứng dụng của bạn được phân tách cao từ bất kỳ chi tiết triển khai nào (tất nhiên bạn thường muốn soạn biểu đồ thời gian chạy thực tế bằng cách sử dụng IOC Container của một số loại) Tôi đã liên kết một cách đáng xấu hổ với một hình ảnh hiện có của mẫu này từ một câu trả lời khác về chủ đề này trên Stack Overflow:
Trong cuốn sách Mã thích ứng thông qua C # , tác giả đã nói về cách tiếp cận này và đặc biệt gọi nó là một việc nên luôn luôn được thực hiện bởi vì nó cung cấp mức độ tách rời cao như vậy. ( ví dụ )
Một lợi thế khác có thể là có thể vá các triển khai riêng lẻ mà không phải lo lắng rằng bạn có thể đã ảnh hưởng đến những người khác, mặc dù đây là một vấn đề khá nhỏ một khi bạn đã siêng năng kiểm tra hồi quy; cũng có thể triển khai các triển khai riêng lẻ trong các thư mục con cũng có thể chứa các phiên bản cụ thể của bất kỳ phụ thuộc bên thứ 3 nào mà chúng có thể cần có thể giúp giữ mọi thứ được tổ chức tốt.
Về nhược điểm thực sự duy nhất tôi có thể nghĩ đến với phương pháp này là về mặt lý thuyết có thể thay đổi giao diện Company.Framework.Persistence.dll
(cùng với các nhị phân của ứng dụng của bạn) và bỏ qua việc cập nhật các dll thực hiện tương ứng sẽ dẫn đến lỗi thời gian chạy cho người dùng của bạn.
Đã từng có lỗi khi làm chính xác điều này trong quá khứ, tôi có thể nói rằng đây thực sự chỉ là điều có thể xảy ra nếu bạn rất bất cẩn :)