Kaedah kilang menggunakan suntikan kebergantungan dan penyongsangan kawalan
Soalan:
Apabila kaedah kilang mencipta objek berbeza, mereka perlu mengendalikan sejumlah besar kebergantungan yang diluluskan.
Masalah:
Menggunakan pernyataan kes suis di kilang adalah bau kod yang tidak baik. Ia memperkenalkan kebergantungan ke dalam kilang itu sendiri dan menjadikannya sukar untuk dilanjutkan.
Penyelesaian: Corak Strategi Suntikan Kebergantungan
Antara Muka:
Tentukan antara muka strategi kilang kereta dan kereta untuk memisahkan penciptaan kereta daripada pelaksanaan konkrit.
<code>public interface ICarFactory { ICar CreateCar(); bool AppliesTo(Type type); } public interface ICarStrategy { ICar CreateCar(Type type); }</code>
Kilang:
Laksanakan kilang berasingan untuk setiap jenis kereta. Kebergantungan kilang-kilang ini akan disuntik oleh kontena DI.
<code>public class Car1Factory : ICarFactory { private readonly IDep1 dep1; private readonly IDep2 dep2; private readonly IDep3 dep3; // ... (构造函数和工厂方法) }</code>
Strategi:
Kelas strategi kereta akan menggunakan antara muka kilang untuk mencipta kereta berdasarkan jenis input.
<code>public class CarStrategy : ICarStrategy { private readonly ICarFactory[] carFactories; // ... (构造函数和策略方法) }</code>
Penggunaan:
Dalam akar gubahan, masukkan kebergantungan yang sesuai ke dalam kelas kilang dan buat strategi kereta. Gunakan strategi ini untuk mencipta jenis kereta yang diingini.
<code>var strategy = new CarStrategy(new ICarFactory[] { new Car1Factory(dep1, dep2, dep3), // ... }); var car1 = strategy.CreateCar(typeof(Car1));</code>
Kelebihan:
Atas ialah kandungan terperinci Bagaimanakah Suntikan Ketergantungan Boleh Menyelesaikan Masalah Banyak Ketergantungan dalam Kaedah Kilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!