Rumah >pembangunan bahagian belakang >C++ >Suntikan Pembina lwn. Singleton atau Lulus Hujah dalam Perpaduan: Pendekatan Suntikan Ketergantungan Mana yang Terbaik?
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)); } // ... }
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>();
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!