SimpleFactory.java
package com.morphiqlabs.wavelet.api;
/**
* Simplified factory interface for implementations that don't require configuration.
*
* <p>This interface extends {@link Factory} with {@code Void} as the configuration type,
* providing a cleaner API for factories that only need simple creation methods.</p>
*
* <h2>Usage Example</h2>
* <pre>{@code
* public class DefaultWaveletFactory implements SimpleFactory<Wavelet> {
* @Override
* public Wavelet create() {
* return new Haar(); // Return default wavelet
* }
* }
* }</pre>
*
* @param <T> the type of object created by this factory
* @since 1.0.0
*/
public interface SimpleFactory<T> extends Factory<T, Void> {
/**
* Creates a new instance with default settings.
*
* @return a new instance of type T
*/
@Override
T create();
/**
* This method is not supported for SimpleFactory.
* Use {@link #create()} instead.
*
* @param config ignored
* @return never returns
* @throws UnsupportedOperationException always
*/
@Override
default T create(Void config) {
throw new UnsupportedOperationException(
"SimpleFactory does not support configuration. Use create() instead.");
}
/**
* Configuration validation is not applicable for SimpleFactory.
*
* @param config ignored
* @return always returns true
*/
@Override
default boolean isValidConfiguration(Void config) {
return true;
}
}