VariantFactoryImpl.java
package io.github.jonloucks.variants.impl;
import io.github.jonloucks.variants.api.Variant;
import io.github.jonloucks.variants.api.VariantFactory;
import java.util.function.Consumer;
import static io.github.jonloucks.contracts.api.Checks.builderConsumerCheck;
/**
* Responsibility: VariantFactory implementation
*/
final class VariantFactoryImpl implements VariantFactory {
@Override
public <T> Variant<T> createVariant(Consumer<Variant.Config.Builder<T>> builderConsumer) {
final Consumer<Variant.Config.Builder<T>> validBuildConsumer = builderConsumerCheck(builderConsumer);
final VariantBuilderImpl<T> variantBuilder = new VariantBuilderImpl<>();
validBuildConsumer.accept(variantBuilder);
return createVariant(variantBuilder);
}
@Override
public <T> Variant<T> createVariant(Variant.Config<T> config) {
return new VariantImpl<>(config);
}
}