Java Builder Design Pattern Example

Chapter: Miscellaneous Last Updated: 06-06-2017 18:08:28 UTC

Program:

            /* ............... START ............... */
                
public class JavaBuilderDesignPattern {

	public static void main(String args[]) {

		// Create the object using builder pattern

		Cake whiteCakeNonVeg = new Cake.Builder().sugar(1).
                butter(0.5).eggs(2).vanila(2).bakingpowder(0.75).milk(0.5)
				.build();

		Cake whiteCakeVeg = new Cake.Builder().sugar(1).
                butter(0.5).vanila(2).bakingpowder(1.75).milk(0.5).flour(2)
		.build();

		System.out.println(whiteCakeNonVeg);
		System.out.println(whiteCakeVeg);
	}

}

class Cake {
	private final double milk;
	private final double sugar;
	private final double butter;
	private final int eggs;
	private final double bakingpowder;
	private final int vanila;
	private final double flour;

	// constructor should be private to enforce object creation through builder
	private Cake(Builder builder) {
		this.milk = builder.milk;
		this.sugar = builder.sugar;
		this.butter = builder.butter;
		this.eggs = builder.eggs;
		this.bakingpowder = builder.bakingpowder;
		this.vanila = builder.vanila;
		this.flour = builder.flour;

	}

	public static class Builder {
		private double milk;
		private double sugar;
		private double butter;
		private int eggs;
		private double bakingpowder;
		private int vanila;
		private double flour;

		public Builder milk(double cup) {
			this.milk = cup;
			return this;
		}

		public Builder sugar(double cup) {
			this.sugar = cup;
			return this;
		}

		public Builder butter(double cup) {
			this.butter = cup;
			return this;
		}

		public Builder eggs(int number) {
			this.eggs = number;
			return this;
		}

		public Builder vanila(int spoon) {
			this.vanila = spoon;
			return this;
		}

		public Builder bakingpowder(double spoon) {
			this.bakingpowder = spoon;
			return this;
		}

		public Builder flour(double cup) {
			this.flour = cup;
			return this;
		}

		// return fully build object
		public Cake build() {
			return new Cake(this);
		}
	}

	@Override
	public String toString() {
		return "Cake { milk=" + milk + "sugar=" + sugar + ", butter=" + butter + ", eggs=" + eggs + ", vanila=" + vanila
				+ ", bakingpowder=" + bakingpowder + ", flour=" + flour + '}';

	}

}
                /* ............... END ............... */
        

Output

Cake { milk=0.5sugar=1.0, butter=0.5, eggs=2, vanila=2, bakingpowder=0.75, flour=0.0}
Cake { milk=0.5sugar=1.0, butter=0.5, eggs=0, vanila=2, bakingpowder=1.75, flour=2.0}

Notes:

  • Builder design pattern is used to construct complex object step by step before building the final object.
  • The main advantages of Builder Pattern are as follows:
  • It provides clear separation between the construction and representation of an object.
  • It provides better control over construction process.
  • It supports to change the internal representation of objects.

Tags

Builder Design Pattern, Java, Miscellaneous

Similar Programs Chapter Last Updated
Data Types In Java Miscellaneous 09-06-2018
Java Program To Find Largest Element Of Array Miscellaneous 21-09-2017
Java Program To Check Whether Number Is Prime Or Not Miscellaneous 08-09-2017
Java Program To Find Power Of Number Using For Loop Miscellaneous 29-08-2017
Java Program To Find LCM Of Two Numbers Miscellaneous 29-08-2017
Java Program To Find GCD Of Two Numbers Miscellaneous 29-08-2017
Java Program To Check Whether An Alphabet Is Vowel Or Consonant Miscellaneous 25-08-2017
Java Program To Find ASCII Value Of Character Miscellaneous 25-08-2017
Java Object HashCode Method Miscellaneous 02-08-2017
Java Factory Design Pattern Example Miscellaneous 06-06-2017
Java Program To Print ASCII Values Miscellaneous 06-04-2017
Java Program To Find HCF LCM Of Two Numbers Miscellaneous 22-09-2018
Java String Array Iteration Miscellaneous 31-03-2017
Java Array Size Miscellaneous 30-03-2017
Java Integer toString Miscellaneous 30-03-2017
Java Sort Array Using Arrays.sort() Miscellaneous 28-03-2017
Java Print Array Using Arrays.toString Miscellaneous 28-03-2017
Java Nested Interface Miscellaneous 25-03-2017
Java Static Nested Class Miscellaneous 25-03-2017
Packages In Java Miscellaneous 24-03-2017
Java Strictfp Keyword Miscellaneous 24-03-2017
Java Call By Reference Miscellaneous 23-03-2017
Java Call By Value Miscellaneous 23-03-2017
Java Unboxing Example Miscellaneous 23-03-2017
Java Autoboxing Example Miscellaneous 23-03-2017
Java Format Currency Miscellaneous 15-02-2017
Java String To BigDecimal Conversion Miscellaneous 15-02-2017
Java Program To Convert Arraylist To Array Miscellaneous 13-02-2017
Java Array Creation And Initialize Miscellaneous 13-02-2017
Java Program To Print Square Pattern Of Star Miscellaneous 16-12-2016

1 2 3 4 5