Design Pattern - Builder Pattern
https://howtodoinjava.com/design-patterns/creational/builder-pattern-in-java/#:~:text=The%20builder%20pattern%20is%20a,object%20it%20is%20to%20create.
In the above provided link you can acquire some notion about Builder Pattern.
Here I provided one example of this pattern:
package Main;
public class Vehicle {
private String engine;
private int wheel;
private int airbags; // optional parameter
public String getEngine() {
return engine;
}
public int getWheel() {
return wheel;
}
public int getAirbags() {
return airbags;
}
private Vehicle(VehicleBuilder builder) {
this.engine = builder.engine;
this.wheel = builder.wheel;
this.airbags = builder.airbags;
}
public static class VehicleBuilder {
private String engine;
private int wheel;
private int airbags;
public VehicleBuilder(String engine, int wheel) {
this.engine = engine;
this.wheel = wheel;
}
public VehicleBuilder setAirbags(int airbags) {
this.airbags = airbags;
return this;
}
public Vehicle build() {
return new Vehicle(this);
}
}
}
package Main;
public class Main {
public static void main(String[] args) {
Vehicle car = new Vehicle.VehicleBuilder("1500cc", 4).setAirbags(2).build();
Vehicle bike = new Vehicle.VehicleBuilder("250cc", 2).build();
}
}*Now here another example of Builder Pattern. This time we allow user to set
multiple parameters after creating object.
public class Person {
private String name;
private String surname;
private int age;
private String religion;
public void setName(String name) {
this.name = name;
}
public void setSurname(String surname) {
this.surname = surname;
}
public void setAge(int age) {
this.age = age;
}
public void setReligion(String religion) {
this.religion = religion;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
public int getAge() {
return age;
}
public String getReligion() {
return religion;
}
public static class PersonBuilder {
private String name;
private String surname;
private int age;
private String religion;
public PersonBuilder(String name, String surname) {
this.name = name;
this.surname = surname;
}
public PersonBuilder setAge(int age) {
this.age = age;
return this;
}
public PersonBuilder setReligion(String religion) {
this.religion = religion;
return this;
}
public Person build() {
return new Person(this);
}
}
private Person(PersonBuilder builder) {
this.name = builder.name;
this.surname = builder.surname;
this.age = builder.age;
this.religion = builder.religion;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", surname='" + surname + '\'' +
", age=" + age +
", religion='" + religion + '\'' +
'}';
}
}*Another alternative:
public class Fanar {
private String name;
private String surname;
private String fatherName;
private int age;
private Fanar() {
}
private Fanar(String name, String surname, String fatherName, int age) {
this.name = name;
this.surname = surname;
this.fatherName = fatherName;
this.age = age;
}
public static class FanarBuilder {
private Fanar f = null;
public FanarBuilder() {
f = new Fanar();
}
public FanarBuilder setName(String name) {
this.f.name = name;
return this;
}
public FanarBuilder setSurname(String surname) {
this.f.surname = surname;
return this;
}
public FanarBuilder setFatherName(String fatherName) {
this.f.fatherName = fatherName;
return this;
}
public FanarBuilder setAge(int age) {
this.f.age = age;
return this;
}
public Fanar build() {
return new Fanar(f.name, f.surname, f.fatherName, f.age);
}
}
@Override
public String toString() {
return "Fanar{" +
"name='" + name + '\'' +
", surname='" + surname + '\'' +
", fatherName='" + fatherName + '\'' +
", age=" + age +
'}';
}
}package com.company;
public class BMW {
private String name;
private String color;
private String engine;
private BMW() {
}
public String getName() {
return name;
}
public String getColor() {
return color;
}
public String getEngine() {
return engine;
}
private static Builder builder;
public static Builder builder() {
if (builder == null) {
builder = new Builder();
}
builder.bmw = new BMW();
return builder;
}
public static class Builder {
private BMW bmw;
public Builder setName(String name) {
bmw.name = name;
return this;
}
public Builder setColor(String color) {
bmw.color = color;
return this;
}
public Builder setEngine(String engine) {
bmw.engine = engine;
return this;
}
public BMW build(){
return bmw;
}
}
}package com.company;
public class BMW {
private String name;
private String color;
private String engine;
private BMW() {
}
public String getName() {
return name;
}
public String getColor() {
return color;
}
public String getEngine() {
return engine;
}
public static class Builder {
private BMW bmw;
private static Builder builder;
public static Builder builder() {
if (builder == null) {
builder = new Builder();
}
builder.bmw = new BMW();
return builder;
}
public Builder setName(String name) {
bmw.name = name;
return this;
}
public Builder setColor(String color) {
bmw.color = color;
return this;
}
public Builder setEngine(String engine) {
bmw.engine = engine;
return this;
}
public BMW build(){
return bmw;
}
}
}package com.builder;
public class User {
private String name;
private String surname;
private String fatherName;
public static class Builder{
private User user;
public Builder name(String name){
user.name = name;
return this;
}
public Builder surname(String surname){
user.surname = surname;
return this;
}
public Builder fatherName(String faherName){
user.fatherName = faherName;
return this;
}
public User build(){
return user;
}
}
}
Комментарии
Отправить комментарий