>>106159393public class Main {
public static void main(String[] args) {
Evaluator e = EvaluatorFactory.get().getManager().getEvaluator();
Request r = Request.builder().withValue(0).build();
Response res = e.eval(r);
System.out.println("Result: " + res.get());
}
}
interface Evaluator { Response eval(Request r); }
class ZeroEvaluator implements Evaluator {
public Response eval(Request r) {
return Response.of(r.get() == 0);
}
}
class Request {
private final int v;
private Request(int v) { this.v = v; }
public int get() { return v; }
public static Builder builder() { return new Builder(); }
static class Builder {
int val;
public Builder withValue(int v) { val = v; return this; }
public Request build() { return new Request(val); }
}
}
class Response {
private final boolean r;
private Response(boolean r) { this.r = r; }
public static Response of(boolean r) { return new Response(r); }
public boolean get() { return r; }
}
class Manager {
public Evaluator getEvaluator() { return new ZeroEvaluator(); }
}
class EvaluatorFactory {
private static final EvaluatorFactory inst = new EvaluatorFactory();
private final Manager m = new Manager();
public static EvaluatorFactory get() { return inst; }
public Manager getManager() { return m; }
}
valid single Java file, btw