Created
August 4, 2012 16:33
-
-
Save kanterov/3258705 to your computer and use it in GitHub Desktop.
Java Named Parameters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// reply to http://worklez.name/blog/2012/07/18/java-named-parameters/ | |
class Request { } | |
class ManagerProvider { } | |
class Job { | |
Job(ManagerProvider provider, Request request, OutputStream out) { } | |
} | |
class JobBuilder { | |
public Job build() { | |
// check required parameters | |
if (request == null) { | |
throw new IllegalStateException(); | |
} | |
// values by default | |
managerProvider = managerProvider == null ? new ManagerProvider() : managerProvider; | |
return new (managerProvider, request, output); | |
} | |
public JobBuilder request(Request request) { | |
this.request = request; | |
return this; | |
} | |
public JobBuilder output(Object output) { | |
this.output = output; | |
return this; | |
} | |
public JobBuilder managerProvider(ManagerProvider managerProvider) { | |
this.managerProvider = managerProvider; | |
return this; | |
} | |
public static void main(String[] args) { | |
Job job = new JobBuilder() | |
.request(new Request()) | |
.output(new OutputStream()) | |
.build(); | |
// ... | |
} | |
private Request request; | |
private Object output; | |
private ManagerProvider managerProvider; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment