Program to demonstrate how to implement Builder Design Pattern in Java.
Output of the program :
package com.hubberspot.designpattern.creational.builder; // 1. Create a Robot class which is to be build by // Builder Design Pattern. public class Robot { // 2. Robot has few properties/characteristics private String robotHead; private String robotTorso; private String robotArms; private String robotLegs; // 3. Create getters for each characteristics public String getRobotHead() { return robotHead; } public String getRobotTorso() { return robotTorso; } public String getRobotArms() { return robotArms; } public String getRobotLegs() { return robotLegs; } // 4. Create a static class which will build our // Robot public static class RobotBuilder { // 5. Provide it with properties with which it will // prepare the required Robot private String robotHead = ""; private String robotTorso = "" ; private String robotArms = ""; private String robotLegs = ""; public RobotBuilder() { } // 6. Create methods for each properties which Robot // requires to get in action. The client will pass // necessary values for the type of Robot they want. public RobotBuilder buildRobotHead(String robotHead) { this.robotHead = robotHead; return this; } public RobotBuilder buildRobotTorso(String robotTorso) { this.robotTorso = robotTorso; return this; } public RobotBuilder buildRobotArms(String robotArms) { this.robotArms = robotArms; return this; } public RobotBuilder buildRobotLegs(String robotLegs) { this.robotLegs = robotLegs; return this; } // 7. Final build method will return us back the required // Robot public Robot build() { return new Robot(this); } } // 8. Actual preparation of Robot by RobotBuilder private Robot(RobotBuilder robotBuilder) { robotHead = robotBuilder.robotHead; robotTorso = robotBuilder.robotTorso; robotArms = robotBuilder.robotArms; robotLegs = robotBuilder.robotLegs; } // 9. Creation of Iron Robot and Steel Robot by the // client. public static void main(String[] args) { System.out.println("Let's build a Iron Robot .... \n"); Robot ironRobot = new Robot.RobotBuilder() .buildRobotHead("Iron Head") .buildRobotTorso("Iron Torso") .buildRobotArms("Iron Arms") .buildRobotLegs("Iron Legs") .build(); System.out.println("Iron Robot is build with following specs : \n"); System.out.println("Robot Head : " + ironRobot.getRobotHead()); System.out.println("Robot Torso : " + ironRobot.getRobotTorso()); System.out.println("Robot Arms : " + ironRobot.getRobotArms()); System.out.println("Robot Legs : " + ironRobot.getRobotLegs()); System.out.println(); System.out.println("Let's build a Steel Robot .... \n"); Robot steelRobot = new Robot.RobotBuilder() .buildRobotHead("Steel Head") .buildRobotTorso("Steel Torso") .buildRobotArms("Steel Arms") .buildRobotLegs("Steel Legs") .build(); System.out.println("Steel Robot is build with following specs : \n"); System.out.println("Robot Head : " + steelRobot.getRobotHead()); System.out.println("Robot Torso : " + steelRobot.getRobotTorso()); System.out.println("Robot Arms : " + steelRobot.getRobotArms()); System.out.println("Robot Legs : " + steelRobot.getRobotLegs()); } }
Output of the program :