Skip to content

Instantly share code, notes, and snippets.

@hackjutsu
Created May 20, 2019 06:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hackjutsu/ff7937049fac404b58b8ab6c9df050d1 to your computer and use it in GitHub Desktop.
Save hackjutsu/ff7937049fac404b58b8ab6c9df050d1 to your computer and use it in GitHub Desktop.
[medium snippets] #medium #designPattern #BuilderPattern
public class StreetMap {
private final Point origin;
private final Point destination;
private final Color waterColor;
private final Color landColor;
private final Color highTrafficColor;
private final Color mediumTrafficColor;
private final Color lowTrafficColor;
public static class Builder {
private final Point origin;
private final Point destination;
private Color waterColor = Color.BLUE;
private Color landColor = new Color(30, 30, 30);
private Color highTrafficColor = Color.RED;
private Color mediumTrafficColor = Color.YELLOW;
private Color lowTrafficColor = Color.GREEN;
public Builder(Point origin, Point destination) {
this.origin = origin;
this.destination = destination;
}
public Builder waterColor(Color color) {
waterColor = color;
return this;
}
public Builder landColor(Color color) {
landColor = color;
return this;
}
public Builder highTrafficColor(Color color) {
highTrafficColor = color;
return this;
}
public Builder mediumTrafficColor(Color color) {
mediumTrafficColor = color;
return this;
}
public Builder lowTrafficColor(Color color) {
lowTrafficColor = color;
return this;
}
public StreetMap build() {
return new StreetMap(this);
}
}
private StreetMap(Builder builder) {
origin = builder.origin;
destination = builder.destination;
waterColor = builder.waterColor;
landColor = builder.landColor;
highTrafficColor = builder.highTrafficColor;
mediumTrafficColor = builder.mediumTrafficColor;
lowTrafficColor = builder.lowTrafficColor;
}
public static void main(String args[]) {
Point origin = new Point(10, 10);
Point destination = new Point(50, 50);
StreetMap map = new StreetMap.Builder(origin, destination)
.landColor(Color.GRAY)
.waterColor(Color.BLUE.brighter())
.build();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment