Rumah  >  Artikel  >  Java  >  Dica Java: Antara Muka Fungsian #

Dica Java: Antara Muka Fungsian #

Barbara Streisand
Barbara Streisandasal
2024-09-24 06:25:36326semak imbas

Dica Java: Functional Interface #

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:

    kurangkan gandingan pengesah
  • meningkatkan fleksibiliti kaedah

Atas ialah kandungan terperinci Dica Java: Antara Muka Fungsian #. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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