Maison  >  Article  >  Java  >  Dica Java : Interface fonctionnelle #

Dica Java : Interface fonctionnelle #

Barbara Streisand
Barbara Streisandoriginal
2024-09-24 06:25:36320parcourir

Dica Java: Functional Interface #

Il est très courant dans le développement d'applications Java d'avoir des injections de dépendances du même bean à différents endroits et souvent dans des relations entre beans comme dans les exemples ci-dessous :

@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
        }
    }
}

Le bean DocumentService a été injecté à la fois dans PersonUpdater et PersonValidator . Dans PersonUpdater le bean peut être utilisé pour d'autres flux de mise à jour, cependant, dans PersonValidator le bean sera UNIQUEMENT sert à rechercher des documents militaires QUAND il s'agit de la mise à jour d'une personne de sexe masculin majeur. Une possibilité d'avoir le même résultat sont les exemples ci-dessous :

@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
        }
    }
}

Avec les Interfaces fonctionnelles, une gamme d'options pour utiliser les comportements d'une application Java s'ouvre ! Ils rendent l'utilisation plus flexible via les arguments de méthode (comme dans l'exemple) et via les attributs de certaines classes.

En plus de l'injection de dépendances qui se fait uniquement à un seul endroit, nous avons :

  • diminuer le couplage du validateur
  • augmenter la flexibilité de la méthode

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn