Tôi đã được nghe về việc sử dụng thuốc tiêm phụ thuộc vào Singleton cho đồng nghiệp của tôi. Tôi vẫn không thể nhận ra nếu đó là hai mẫu trực giao có thể thay thế bằng nhau? Hay DI là một phương pháp để làm cho mẫu Singleton có thể kiểm tra được?
Xin hãy xem đoạn mã sau đây.
IMathFace obj = Singleton.Instance;
SingletonConsumer singConsumer = new SingletonConsumer(obj);
singConsumer.ConsumerAdd(10,20);
Việc SingletonConsumer
chấp nhận một tham số của loại IMathFace
. Thay vì truy cập vào lớp singleton trong nội bộ, SingletonConsumer
sẽ nhận được cá thể singleton được người gọi thông qua. Đây có phải là một ví dụ tốt về việc tiêu thụ lớp singleton thông qua tiêm phụ thuộc?