Skip to main content

The builder pattern in Java 8

The builder pattern is an alternative to construct complex object. This can be used only when you want to build different immutable object in the same building process.

It allows object creation using method chaining and more flexible object creation.

Example:

Let's take Person as data model

package com.javaweblog.build.pattern;

public class Person {
 
 private String firstName;
 private String lasteName;
 private int age;
 private String gender;
 
 public Person(String firstName, String lasteName, 
   int age, String gender){
  this.firstName = firstName;
  this.lasteName = lasteName;
  this.age = age;
  this.gender = gender;
 }
 
 public String getFirstName() {
  return firstName;
 }
 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }
 public String getLasteName() {
  return lasteName;
 }
 public void setLasteName(String lasteName) {
  this.lasteName = lasteName;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public String getGender() {
  return gender;
 }
 public void setGender(String gender) {
  this.gender = gender;
 }
 
}


package com.javaweblog.build.pattern;

public class PersonBuilder {
 
 private String firstName;
 private String lasteName;
 private int age;
 private String gender;
 
 public PersonBuilder(String firstName, String lasteName, 
   int age, String gender){
  
  this.firstName = firstName;
  this.lasteName = lasteName;
  this.age = age;
  this.gender = gender;
  
 }
        public PersonBuilder(){
  
 }

 public PersonBuilder setFirstName(String firstName) {
  this.firstName = firstName;
  return this;
 }

 public PersonBuilder setLasteName(String lasteName) {
  this.lasteName = lasteName;
  return this;
 }

 public PersonBuilder setAge(int age) {
  this.age = age;
  return this;
 }

 public PersonBuilder setGender(String gender) {
  this.gender = gender;
  return this;
 }
 
 public Person build(){
  return new Person( firstName, lasteName, age,
    gender);
 }

}

public class BuilderTest {

 public static void main(String[] args) {
  PersonBuilder builder = new PersonBuilder();
  Person p1 = builder.setFirstName(
                    "Suri").setGender("male").build();
  Person p2 = builder.setFirstName(
                    "Suren").setAge(34).build();

 }

}


Comments

Popular posts from this blog

Simple Java Deck Of Cards

Simple Java Deck Of Cards package com.design.misc; public class Card { private String suit; private String face; public Card(String suit, String face) { super(); this.suit = suit; this.face = face; } public String getSuit() { return suit; } public void setSuit(String suit) { this.suit = suit; } public String getFace() { return face; } public void setFace(String face) { this.face = face; } @Override public String toString(){ return suit +" - "+ face; } } package com.design.misc; import java.util.Random; public class DeckOfCard { private Card[] cards; private int currentCount; private int size = 52; private String[] suits = { "CLUBS", "SPADES", "HEARTS", "DIAMONDS" }; private String[] faces = { "ACE", "2", "3", "4", "5", "6", "7", "8", "9", "10", "JACK", "QUEEN...