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

Dica Java : Interface fonctionnelle #

Barbara Streisand
Libérer: 2024-09-24 06:25:36
original
397 Les gens l'ont consulté

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;
    }
}
Copier après la connexion
@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
        }
    }
}
Copier après la connexion

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;
    }
}
Copier après la connexion
@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
        }
    }
}
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal