Satu kata: Tidak.
Lebih banyak kata: Ketergantungan injeksi persis seperti itu. Ini adalah cara di mana Anda memperkenalkan sumber daya yang bergantung pada objek lain, tetapi seharusnya tidak mengetahui detail rumit dari, dari sumber lain. Menggunakan DI tidak berarti bahwa TIDAK ADA dalam program Anda harus tahu cara membuat objek lain; pada kenyataannya, saya berpendapat bahwa sangat tidak mungkin untuk program non-sepele untuk menghindari kata kunci "baru" (atau alternatif berbasis refleksi) sepenuhnya. Namun, DI memang berarti bahwa objek yang seharusnya TIDAK HARUS tahu cara membuat objek kompleks yang membutuhkan banyak dependensi yang akan secara ketat memasangkan objek ini dengan yang lain, seharusnya tidak memiliki semua pengetahuan yang berhubungan erat ini.
Saya akan mempelajari dua teori utama desain perangkat lunak O / O, GRASP dan SOLID. GRASP akan memberitahu Anda untuk mempelajari tujuan objek, dan bertanya pada diri sendiri, "Haruskah objek ini bertanggung jawab untuk membuat objek baru dari tipe lain ini? Apakah itu bagian dari 'deskripsi pekerjaan' dari objek ini?" SOLID melangkah lebih jauh: "S" adalah singkatan dari "Prinsip Tanggung Jawab Tunggal", yang menyatakan secara jelas bahwa suatu objek harus memiliki satu pekerjaan, dan itu harus menjadi satu-satunya objek dalam program yang melakukan pekerjaan tertentu itu.
Jadi, GRASP umumnya akan mendorong Anda untuk melihat kelas-kelas Anda yang ada untuk membuat objek baru ini, dan menemukan satu yang sesuai dengan tugas membuat objek ini dengan apa yang sudah dilakukan objek, sambil mempertahankan tingkat "kohesi" yang Anda inginkan. SOLID akan memberi tahu Anda bahwa kohesi adalah kuncinya; tugas membuat benda-benda ini harus diberikan kepada beberapa pabrik yang harus disuntikkan ke kelas Anda. Saya pikir Anda akan menemukan, ketika kompleksitas program Anda terus tumbuh, kepatuhan terhadap salah satu dari metodologi ini, dengan kemauan untuk memperbaiki, akan menghasilkan arsitektur yang sangat mirip.