Giả sử tôi đang có một mô hình miền và tôi muốn đọc và lưu nó từ bất kỳ lớp kiên trì nào - ngay bây giờ nó có thể là một tệp json nhưng trong tương lai nó có thể là xml hoặc cơ sở dữ liệu (cũng có thể thay đổi theo loại ).
Để tạo mô hình miền từ lớp liên tục, tôi đã triển khai Giao diện đơn giản, giả sử, chứa một phương thức getAll()
và saveAll()
. Nếu tôi muốn chuyển sang một loại kiên trì khác, tôi có thể thay đổi việc thực hiện giao diện. Tuy nhiên, bên trong triển khai tôi sẽ sử dụng các giải pháp hoàn toàn khác nhau để đọc và lưu trữ dữ liệu nên tôi sẽ phải sử dụng các đối tượng khác nhau từ các thư viện khác để xử lý dữ liệu.
Giả sử tôi sử dụng bộ nối tiếp Json trong lần triển khai đầu tiên, sau đó tôi sẽ khởi tạo trực tiếp phiên bản của trình tuần tự đó trong triển khai của mình. Điều này sau đó sẽ dẫn đến việc tôi thực hiện trực tiếp tùy thuộc vào serializer đó, tôi không bao giờ có thể cung cấp cho nó một cái khác. Nhưng dù sao thì điều này cũng không thể xảy ra, vì không có giao diện phổ biến cho các bộ nối tiếp (hoặc bất kỳ loại kiên trì nào). Vì vậy, nếu tôi muốn sử dụng một serializer khác, điều duy nhất tôi có thể làm là viết một triển khai hoàn toàn mới thay vì chỉ truyền vào một cái khác từ bên ngoài.
Vì vậy, nó có ổn để phụ thuộc mã cứng trong trường hợp này? Hoặc có một lựa chọn tốt hơn?