Skip to content

Instantly share code, notes, and snippets.

@alivcor
Created March 22, 2020 22:42
Show Gist options
  • Save alivcor/40fc44c1b28286481944e113b24de245 to your computer and use it in GitHub Desktop.
Save alivcor/40fc44c1b28286481944e113b24de245 to your computer and use it in GitHub Desktop.
Builder Pattern - Car
public class Car {
private int modelYear;
private String modelName;
private String color;
private String manufacturer;
private double sellingPrice;
private String carType;
private Boolean isLuxury;
private Boolean isImported;
private String countryOfManufacture;
public static class Builder {
private int modelYear;
private String modelName;
private String color;
private String manufacturer;
private double sellingPrice;
private String carType;
private Boolean isLuxury;
private Boolean isImported;
private String countryOfManufacture;
public Builder modelYear(int modelYear) {
this.modelYear = modelYear;
return this;
}
public Builder modelName(String modelName) {
this.modelName = modelName;
return this;
}
public Builder color(String color) {
this.color = color;
return this;
}
public Builder manufacturer(String manufacturer) {
this.manufacturer = manufacturer;
return this;
}
public Builder sellingPrice(double sellingPrice) {
this.sellingPrice = sellingPrice;
return this;
}
public Builder carType(String carType) {
this.carType = carType;
return this;
}
public Builder isLuxury(Boolean isLuxury) {
this.isLuxury = isLuxury;
return this;
}
public Builder isImported(Boolean isImported) {
this.isImported = isImported;
return this;
}
public Builder countryOfManufacture(String countryOfManufacture) {
this.countryOfManufacture = countryOfManufacture;
return this;
}
public Builder(String modelName, String manufacturer){
if (modelName == null || manufacturer == null) {
throw new NullPointerException("modelName or manufacturer cannot be null");
}
this.modelName = modelName;
this.manufacturer = manufacturer;
}
public Car build() {
return new Car(this);
}
}
private Car(Builder builder) {
this.modelYear = builder.modelYear;
this.modelName = builder.modelName;
this.color = builder.color;
this.manufacturer = builder.manufacturer;
this.sellingPrice = builder.sellingPrice;
this.carType = builder.carType;
this.isLuxury = builder.isLuxury;
this.isImported = builder.isImported;
this.countryOfManufacture = builder.countryOfManufacture;
}
public int getModelYear(){
return modelYear;
}
public String getModelName(){
return modelName;
}
public String getColor(){
return color;
}
public String getManufacturer(){
return manufacturer;
}
public double getSellingPrice(){
return sellingPrice;
}
public String getCarType(){
return carType;
}
public Boolean getIsLuxury(){
return isLuxury;
}
public Boolean getIsImported(){
return isImported;
}
public String getCountryOfManufacture(){
return countryOfManufacture;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment