All Downloads are FREE. Search and download functionalities are using the official Maven repository.

co.pragmati.builder.Builder Maven / Gradle / Ivy

package co.pragmati.builder;

import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 * Generic builder
 * @param 
 */
public class Builder {

    private final Supplier instantiator;

    private List> instanceModifiers = new ArrayList<>();

    public Builder(Supplier instantiator) {
        this.instantiator = instantiator;
    }

    public static  Builder of(Supplier instantiator) {
        return new Builder(instantiator);
    }

    public  Builder with(BiConsumer consumer, U value) {
        Consumer c = instance -> consumer.accept(instance, value);
        instanceModifiers.add(c);
        return this;
    }

    public T build() {
        T value = instantiator.get();
        instanceModifiers.forEach(modifier -> modifier.accept(value));
        instanceModifiers.clear();
        return value;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy