7

Tôi đã cố gắng để tìm hiểu về dependency injection và đã được đọc về và cố gắng để mã hóa một container dependency injection nhỏ tương tự như sau: http://fabien.potencier.org/article/12/do-you-need-a-dependency-injection-containerDependency Injection container - Factory Pattern

Một trong những điều đó là khó hiểu với tôi là này :

Không phải là thùng chứa phụ thuộc tiêm chỉ là triển khai được tôn vinh của mẫu nhà máy?

Nếu vậy, tại sao không chỉ gọi nó như vậy, tại sao cần cho một thuật ngữ ưa thích chỉ để gây nhầm lẫn vấn đề.

Nếu không, ai đó có thể giải thích những gì tôi đang thiếu ở đây?

+1

thể trùng lặp của [Dependency Injection vs mẫu Factory] (http: // stackoverflow. com/questions/557742/dependency-injection-vs-factory-pattern) – podiluska

+1

'Dependency Injection' là một thuật ngữ rộng hơn nhiều so với 'Dependency Injection Container'. Nó rất dễ dàng để thấy sự khác biệt giữa DI và một nhà máy, không dễ dàng như vậy để thấy sự khác biệt giữa một DI Container và một nhà máy. Vì vậy, tôi không nghĩ rằng đó là một câu hỏi trùng lặp ở tất cả. – Russ

Trả lời

7

Bạn phải tách riêng Dependency Injection và Inversion Of Control.

Tiêm phụ thuộc là bạn đưa các phụ thuộc vào lớp thay vì để chính lớp đó chịu trách nhiệm về các phụ thuộc của nó.

Đảo ngược kiểm soát đúng hơn là điều gì đó kiểm soát đối tượng và tuổi thọ của nó. Trong trường hợp này, nó là tùy chọn để quyết định khi nào và làm thế nào một đối tượng nên được tạo ra và xử lý.

Mẫu nhà máy là tất cả về cách tạo đối tượng mới tại mỗi cuộc gọi. Bản thân mẫu không nói bất cứ điều gì về việc nên tạo ra các phụ thuộc như thế nào.

Đó là lý do tại sao bạn có thể định cấu hình các vòng đời khác nhau và sử dụng các vùng chứa con để điều khiển các đối tượng có thời lượng giới hạn.

Tôi đã viết một bài báo về điều đó ở đây: http://www.codeproject.com/Articles/386164/Get-injected-into-the-world-of-inverted-dependenci

Hoặc nếu bạn muốn thấy có nhiều ví dụ: http://www.codeproject.com/Articles/440665/Having-fun-with-Griffin-Container

Các vấn đề liên quan