Rumah > pembangunan bahagian belakang > C++ > Suntikan Pembina lwn. Singleton atau Lulus Hujah dalam Perpaduan: Pendekatan Suntikan Ketergantungan Mana yang Terbaik?

Suntikan Pembina lwn. Singleton atau Lulus Hujah dalam Perpaduan: Pendekatan Suntikan Ketergantungan Mana yang Terbaik?

Barbara Streisand
Lepaskan: 2024-12-27 22:13:10
asal
636 orang telah melayarinya

Constructor Injection vs. Singleton or Argument Passing in Unity: Which Dependency Injection Approach is Best?

Suntikan Kebergantungan dalam Perpaduan: Suntikan Pembina lwn. Singleton atau Lulus Argumen

Apabila menggunakan rangka kerja suntikan pergantungan seperti Unity, pertimbangan penting timbul mengenai cara menyelesaikan kebergantungan dalam lapisan yang lebih dalam aplikasi.

Dalam senario yang dibentangkan, kelas TestSuiteParser memerlukan akses kepada contoh TestSuite dan TestCase. Untuk menangani perkara ini, beberapa pendekatan diterokai:

Bekas Perpaduan Singleton

Mencipta singleton untuk menyimpan bekas Unity menyediakan akses kepada bekas dari mana-mana sahaja dalam pangkalan kod. Walau bagaimanapun, pendekatan ini memperkenalkan kebergantungan pada bekas itu sendiri, yang kurang daripada ideal.

Meluluskan Bekas Perpaduan sebagai Hujah

Meluluskan bekas Perpaduan sebagai hujah kepada setiap kelas yang memerlukan kebergantungan boleh menjadi menyusahkan dan tidak menyenangkan secara visual.

Pembina Suntikan

Penyelesaian pilihan untuk suntikan pergantungan ialah suntikan pembina. Dalam corak ini, kebergantungan diisytiharkan sebagai parameter dalam pembina kelas, seperti yang ditunjukkan dalam kelas TestSuiteParser di bawah:

public class TestSuiteParser
{
    private readonly TestSuite _testSuite;
    private readonly TestCase _testCase;

    public TestSuiteParser(TestSuite testSuite, TestCase testCase)
    {
        _testSuite = testSuite ?? throw new ArgumentNullException(nameof(testSuite));
        _testCase = testCase ?? throw new ArgumentNullException(nameof(testCase));
    }

    // ...
}
Salin selepas log masuk

Dengan menggunakan suntikan pembina, kebergantungan diselesaikan secara automatik oleh bekas apabila contoh kelas itu dicipta. Pendekatan ini memastikan bahawa kelas mempunyai kebergantungan yang diperlukan yang tersedia pada instantiasi.

Dalam akar gubahan, bekas Unity boleh dikonfigurasikan seperti berikut:

container.RegisterType<TestSuite, ConcreteTestSuite>();
container.RegisterType<TestCase, ConcreteTestCase>();
container.RegisterType<TestSuiteParser>();

var parser = container.Resolve<TestSuiteParser>();
Salin selepas log masuk

Apabila bekas menyelesaikan tika TestSuiteParser , ia secara automatik menyuntik TestSuite dan TestCase kebergantungan.

Kesimpulan

Suntikan konstruktor menyediakan cara yang bersih dan cekap untuk menyelesaikan kebergantungan dalam perpaduan, menghapuskan kelemahan pendekatan lulus tunggal atau hujah. Pendekatan ini menggalakkan gandingan longgar dan kebolehujian yang dipertingkatkan dalam aplikasi anda.

Atas ialah kandungan terperinci Suntikan Pembina lwn. Singleton atau Lulus Hujah dalam Perpaduan: Pendekatan Suntikan Ketergantungan Mana yang Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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