Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Suntikan Ketergantungan Boleh Menyelesaikan Cabaran Kaedah Kilang dengan Banyak Ketergantungan?

Bagaimanakah Suntikan Ketergantungan Boleh Menyelesaikan Cabaran Kaedah Kilang dengan Banyak Ketergantungan?

Linda Hamilton
Lepaskan: 2025-01-21 01:16:11
asal
327 orang telah melayarinya

How Can Dependency Injection Solve Factory Method Challenges with Many Dependencies?

Kaedah kilang menggunakan suntikan kebergantungan dan penyongsangan kawalan

Soalan:

Anda biasa dengan corak kaedah kilang, tetapi menghadapi cabaran dalam menguruskan sejumlah besar kebergantungan dalam pembina kilang. Anda cuba menyuntik kelas kereta konkrit ke dalam kilang, tetapi ini melanggar prinsip kilang. Anda juga tidak mahu menggunakan pencari perkhidmatan kerana ia terkenal sebagai anti-corak.

Penyelesaian:

Kaedah yang paling sesuai untuk senario ini ialah Mod Strategi. Corak ini membolehkan bekas DI anda menyuntik kebergantungan ke dalam keadaan kilang milik mereka, menghapuskan keperluan untuk menggunakan pencari perkhidmatan atau mengacaukan kelas lain dengan kebergantungan.

Pelaksanaan:

Antara Muka:

<code>public interface ICarFactory
{
    ICar CreateCar();
    bool AppliesTo(Type type);
}

public interface ICarStrategy
{
    ICar CreateCar(Type type);
}</code>
Salin selepas log masuk

Kilang:

<code>public class Car1Factory : ICarFactory
{
    private readonly IDep1 dep1;
    private readonly IDep2 dep2;
    private readonly IDep3 dep3;

    // ... 构造函数和实现
}

public class Car2Factory : ICarFactory
{
    private readonly IDep4 dep4;
    private readonly IDep5 dep5;
    private readonly IDep6 dep6;

    // ... 构造函数和实现
}</code>
Salin selepas log masuk

Strategi:

<code>public class CarStrategy : ICarStrategy
{
    private readonly ICarFactory[] carFactories;

    public CarStrategy(ICarFactory[] carFactories)
    {
        // ... 构造函数和实现
    }
}</code>
Salin selepas log masuk

Penggunaan:

<code>var strategy = new CarStrategy(new ICarFactory[] {
    new Car1Factory(dep1, dep2, dep3),
    new Car2Factory(dep4, dep5, dep6)
});

var car1 = strategy.CreateCar(typeof(Car1));
var car2 = strategy.CreateCar(typeof(Car2));</code>
Salin selepas log masuk

Kelebihan:

  • Elakkan menggunakan penyata kes suis di kilang.
  • Menyokong menambah kilang tambahan tanpa mereka bentuk semula.
  • Setiap kilang mempunyai tanggungan sendiri yang disuntik oleh bekas DI.
  • Ikuti prinsip suntikan pergantungan dan penyongsangan kawalan.

Atas ialah kandungan terperinci Bagaimanakah Suntikan Ketergantungan Boleh Menyelesaikan Cabaran Kaedah Kilang dengan Banyak Ketergantungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan