import java.util.function.*;

class Ideone {
	
    public static void main(String[] args) {
	ProcessorFactory<Processor<String>> pf = new ProcessorFactory(Processor<String>::new);
	Processor<String> p = pf.build();
	p.process("Ciao!");
    }
}

class Processor<T> {
    void process( T request ) {
    	System.out.println(request);
    }
}

class ProcessorFactory<T> {
    private Supplier<T> supplier;

    ProcessorFactory(Supplier<T> supplier) {
        this.supplier = supplier;
    }

    T build() {
        return supplier.get();
    }
}