Tôi đang cấu trúc lại một ứng dụng PHP và tôi đang cố gắng thực hiện việc tiêm phụ thuộc (DI) nhiều nhất có thể.
Tôi cảm thấy như mình đã nắm bắt tốt cách thức hoạt động của nó, và tôi chắc chắn có thể thấy các lớp học của mình trở nên gọn gàng và mạnh mẽ hơn rất nhiều.
Tôi đang tái cấu trúc để tôi có thể thêm một phụ thuộc thay vì tạo một đối tượng mới trong lớp, nhưng đến một lúc nào đó tôi sẽ phải tạo một số đối tượng, nghĩa là sử dụng new
từ khóa đáng sợ .
Vấn đề bây giờ tôi gặp phải là tại thời điểm nào tôi thực sự có thể tạo ra các đối tượng mới? Trông giống như tôi sẽ kết thúc ở một lớp cấp cao nhất, tạo ra vô số đối tượng mới vì không còn nơi nào để đi. Điều này cảm thấy sai.
Tôi đã đọc một số blog sử dụng các lớp của nhà máy để tạo tất cả các đối tượng và sau đó bạn đưa nhà máy vào các lớp khác. Sau đó, bạn có thể gọi các phương thức xuất xưởng và nhà máy tạo đối tượng mới cho bạn.
Mối quan tâm của tôi khi làm điều này là bây giờ các lớp học tại nhà máy của tôi sẽ là new
miễn phí cho tất cả! Tôi đoán điều này có thể ổn vì chúng là các lớp xuất xưởng, nhưng có một số quy tắc cần tuân thủ khi sử dụng mẫu nhà máy và DI, hoặc tôi sẽ đi khỏi dấu hiệu ở đây?
new
. Tất nhiên, có một vài điểm nhập cảnh mà bạn cần gọi vào bộ chứa IoC, nhưng không nên có nhiều điểm. Thông thường, bạn định cấu hình IoC một lần và sau đó yêu cầu một lớp được giải quyết theo yêu cầu. Trong trường hợp MVC đó thường là bộ điều khiển.