fredag 6 december 2013

Design Pattern: Builder

This builder design pattern is not the one described by Gang of Four, but a common way to build things in Java.

As you create a java class, you also define a static builder class, which holds the exact same fields as your original Java class.

For each field in the builder class, define a setter-method that sets the value specified on correct field, and return the it self (the builder object).
At the end you define a build-method that returns a new instance of the original class.

class Fudge {

 private final int condensedMilk;
 private final String chocolateType;

    public static class Builder {

  //exact same fields as in the original class
  private int condensedMilk;
  private String chocolateType;

  //Our setter-methods, which returns it self (the builder object)
        public Builder condensedMilk(int can){this.condensedMilk = can; return this; }
  public Builder chocolateType(String type){this.chocolateType = type; return this; }
  
        public Fudge build() {
   System.out.println("Fudge created!");
            return new Fudge(this);
        }
    }
 //A private constructor for the Fudge class
 //Having this constructor as private make sure that you can't 
 //instance this class in any other way than through the builder class
    private Fudge(Builder builder) {
        
  this.condensedMilk = builder.condensedMilk;
  this.chocolateType = builder.chocolateType;
    }  
}

public class BuilderPatternExample {
  
    public static void main(String args[]) {
  //Create a new fudge with white chocolate
        Fudge WhiteChocolateFudge = new Fudge.Builder()
       .condensedMilk(1)
       .chocolateType("White")
      .build();
    }
}




Enjoy!

Inga kommentarer:

Skicka en kommentar