Adalah perkara biasa dalam pembangunan aplikasi Java untuk mempunyai suntikan pergantungan bagi kacang yang sama di lokasi yang berbeza dan selalunya dalam hubungan antara kacang seperti dalam contoh di bawah:
@Service @RequiredArgsConstructor public class PersonUpdater { private final PersonValidator validator; private final DocumentService documentService; //outras utilizações no fluxo de atualização public Person toUpdate(final Person person) { validator.validate(person); //...fluxo de atualização de pessoa return person; } }
@Component @RequiredArgsConstructor public class PersonValidator { private final DocumentService documentService; public void validate(final Person person) { if (person.isAdult() && person.isMale()) { final var documents = documentService.getMilitaryDocuments(person.getId()); //validações necessárias } } }
Kacang DocumentService telah disuntik ke dalam kedua-dua PersonUpdater dan PersonValidatorPersonUpdater kacang boleh digunakan untuk aliran kemas kini lain, walau bagaimanapun, dalam PersonValidator kacang akan menjadi SAHAJA digunakan untuk mencari dokumen ketenteraan BILA ia adalah kemas kini seorang lelaki dalam umur yang sah. Satu kemungkinan untuk mendapatkan hasil yang sama adalah contoh di bawah:
@Service @RequiredArgsConstructor public class PersonUpdater { private final PersonValidator validator; private final DocumentService documentService; //outras utilizações no fluxo de atualização public Person toUpdate(final Person person) { validator.validate(person, () -> documentService.getMilitaryDocuments(person.getId())); //...fluxo de atualização de pessoa return person; } }
@Component @RequiredArgsConstructor public class PersonValidator { public void validate(final Person person, final Supplier<List<Document>> documentsSupplier) { if (person.isAdult() && person.isMale()) { final var documents = documentsSupplier.get(); //validações necessárias } } }Dengan
Antara Muka Fungsian, pelbagai pilihan untuk menggunakan gelagat aplikasi Java terbuka! Mereka menjadikan penggunaan lebih fleksibel melalui argumen kaedah (seperti dalam contoh) dan melalui atribut sesetengah kelas.
Selain suntikan pergantungan hanya dilakukan di satu tempat, kami mempunyai:
Atas ialah kandungan terperinci Dica Java: Antara Muka Fungsian #. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!