Kaedah kilang menggunakan suntikan kebergantungan dan penyongsangan kawalan
Anda sudah biasa dengan kaedah kilang dan corak suntikan kebergantungan (DI), tetapi memerlukan panduan untuk kes khusus sejumlah besar kebergantungan dalam kaedah kilang berparameter.
Masalah: Terlalu bergantung pada kilang berparameter
Dalam kelas kilang anda, pembina memerlukan enam tanggungan dan setiap contoh kereta yang dibuat oleh kilang mempunyai set tanggungan yang berbeza. Ini menjadikan kilang sukar untuk diurus dan memperkenalkan penyataan CreateCar
dalam kaedah switch case
.
Kaedah alternatif
Anda mencadangkan dua alternatif: menyuntik contoh kereta terus ke dalam pembina kilang atau menggunakan pengesan perkhidmatan. Walau bagaimanapun, penyelesaian ini masing-masing mempunyai kelemahan mereka. Menyuntik contoh kereta melanggar prinsip reka bentuk kilang, dan menggunakan pencari perkhidmatan biasanya tidak digalakkan.
Penyelesaian: Corak Strategi untuk Suntikan Ketergantungan
Daripada menggunakan pernyataan switch case
di kilang, pertimbangkan untuk menggunakan corak Strategi untuk suntikan pergantungan. Corak ini membolehkan anda membuat pelbagai pelaksanaan kilang, setiap satu dikhususkan untuk mencipta jenis kereta tertentu.
Pelaksanaan:
ICarFactory
dan ICarStrategy
. ICarFactory
mewakili kilang yang digunakan untuk mencipta contoh kereta, manakala ICarStrategy
mewakili koleksi kilang. Car1Factory
dan Car2Factory
. Kilang-kilang ini menyuntik kebergantungan yang diperlukan melalui pembina mereka. CarStrategy
yang melaksanakan ICarStrategy
dan mengandungi tatasusunan ICarFactory
tika. Kaedah CarStrategy
dalam CreateCar
berulang ke atas kilang untuk mencari kilang yang boleh mencipta jenis kereta yang diminta. CarStrategy
kejadian ke dalam kod anda. Anda kemudiannya boleh menggunakan kaedah CreateCar
untuk membuat contoh kereta tanpa menyatakan kebergantungan secara langsung. Kelebihan Mod Strategi:
switch case
pernyataan dalam kaedah kilangAtas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguruskan Ketergantungan Berlebihan dengan Berkesan dalam Kaedah Kilang Berparameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!