Heim > Java > javaLernprogramm > Hauptteil

Dica Java: Funktionsschnittstelle #

Barbara Streisand
Freigeben: 2024-09-24 06:25:36
Original
196 Leute haben es durchsucht

Dica Java: Functional Interface #

Bei der Entwicklung von Java-Anwendungen kommt es sehr häufig vor, dass Abhängigkeitsinjektionen derselben Bean an verschiedenen Orten und häufig in Beziehungen zwischen Beans erfolgen, wie in den folgenden Beispielen:

@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;
    }
}
Nach dem Login kopieren
@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
        }
    }
}
Nach dem Login kopieren

Die Bean DocumentService wurde sowohl in PersonUpdater als auch in PersonValidator injiziert. In PersonUpdater kann die Bean für andere Update-Flows verwendet werden, in PersonValidator ist die Bean jedoch NUR Wird zur Suche nach Militärdokumenten verwendet WENN es sich um die Aktualisierung einer volljährigen männlichen Person handelt. Eine Möglichkeit, das gleiche Ergebnis zu erzielen, sind die folgenden Beispiele:

@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;
    }
}
Nach dem Login kopieren
@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
        }
    }
}
Nach dem Login kopieren

Mit Functional Interfaces eröffnen sich vielfältige Möglichkeiten, die Verhaltensweisen einer Java-Anwendung zu nutzen! Sie machen die Verwendung über Methodenargumente (wie im Beispiel) und über Attribute einer Klasse flexibler.

Zusätzlich dazu, dass die Abhängigkeitsinjektion nur an einem Ort erfolgt, haben wir Folgendes:

  • Validatorkopplung verringern
  • Erhöhen Sie die Flexibilität der Methode

Das obige ist der detaillierte Inhalt vonDica Java: Funktionsschnittstelle #. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!