[JDK durmiente] Proveedor de explicación detallada de la interfaz de programación funcional de Java

1. Introducción al Proveedor

¿Cuáles son los beneficios de Proveedor? También hay diferentes opiniones sobre esto en Internet: el proveedor puede no ser tan fácil de entender como el predicado , el consumidor y la función presentados anteriormente . La introducción oficial es:

Representa un proveedor de resultados que no requiere que se devuelvan resultados nuevos o diferentes cada vez que se llama al proveedor.

El código fuente es el siguiente:

@FunctionalInterface
public interface Supplier<T> {
    
    

    /**
     * Gets a result.
     *
     * @return a result
     */
    T get();
}

Podemos usar Proveedor para representar cómo obtener un resultado. Cuando necesitemos el resultado, podemos llamar a la función get() para obtener el resultado. Da un ejemplo sencillo:

Suppliper<Person> supplier = Person::new;
Person p = supplier.get();

El ejemplo anterior describe cómo obtener un objeto Persona. Sí, es un ejemplo muy simple. Esto también ha llevado a muchas personas a pensar que no hay necesidad de Proveedor. De hecho, si es solo un nuevo objeto simple, usar Proveedor es De hecho, es un pequeño problema. Una obra maestra.

Lo que debes entender es que utilizar Proveedor te ayuda a obtener un resultado, que puede ser un objeto o un valor fijo. Cuando descubra que se requieren una serie de operaciones engorrosas para obtener un resultado, puede considerar utilizar Proveedor para expresar cómo obtener el resultado.

Lo que hay que tener en cuenta aquí es no confundirlo con Consumidor y Función. En primer lugar, la función get() del Proveedor no tiene parámetros y su objetivo es obtener resultados. Tanto el Consumidor como la Función necesitan pasar un parámetro. El Consumidor se centra en el proceso de procesamiento y la Función se centra en el proceso y los resultados.

2. Implementar la clase SingletonSupplier

Si solo utiliza la interfaz del Proveedor, en muchos casos puede resultar difícil satisfacer las necesidades comerciales y deberá implementar la interfaz del Proveedor. Tome Spring como ejemplo SingletonSupplier. Utilizándolo, podemos mantener fácilmente un singleton.

No entraré en el código fuente específico, veamos cómo implementar SingletonSupplierun singleton:

public class Person {
    
    
    private static SingletonSupplier<Person> holder = new SingletonSupplier<>(null, Person::new);

    private Person() {
    
    }

    public static Person getInstance() {
    
    
        return holder.get();
    }
}

¿Es sencillo el proceso de implementación? Y este sigue siendo un singleton vago, y solo se creará una nueva instancia cuando se use.

3. Otras variaciones del Proveedor

Nombre de la interfaz parámetro Tipo de devolución describir
Proveedor booleano ninguno booleano El resultado es de tipo booleano.
DobleProveedor ninguno booleano El resultado es de tipo Doble
ProveedorInt ninguno booleano El resultado es de tipo int
Proveedor largo ninguno booleano El resultado es de tipo Largo

Recomendación de artículo:

[JDK durmiente] Explicación detallada del predicado de la interfaz de programación funcional de Java

[JDK durmiente] Explicación detallada de la interfaz de programación funcional de Java Consumidor, Función

[JDK dormido] Explicación detallada de la interfaz de programación funcional de Java UnaryOperator, BinaryOperator
fin
El paraíso del desarrollo de Java

Supongo que te gusta

Origin blog.csdn.net/u012534326/article/details/107031068
Recomendado
Clasificación