Builder Pattern

Pros

  • e

Cons

  • e

Example Explanation

[UML]

class Main
{
  public static void main(String[] args)
  {
    CharacterEntity ent = new CharacterEntity.Builder(5).build();
    System.out.println(ent);
    //Level: 5 {10, 10, 10, 10, 10, 10}

    CharacterEntity ent2 = new CharacterEntity.Builder(5).strength(12).build();
    System.out.println(ent2);
    //Level: 5 {12, 10, 10, 10, 10, 10}

    CharacterEntity ent3 = new CharacterEntity.Builder(5).strength(12).agility(14).build();
    System.out.println(ent3);
    //Level: 5 {12, 10, 14, 10, 10, 10}
  }
}

class CharacterEntity
{
  private int strength;
  private int vitality;
  private int agility;
  private int dexterity;
  private int intelligence;
  private int wisdom;

  private final int level;

  public static class Builder
  {
    //required parameters
    private final int level;

    //optional parameters
    private int strength = 10;
    private int vitality = 10;
    private int agility = 10;
    private int dexterity = 10;
    private int intelligence = 10;
    private int wisdom = 10;


    public Builder(int level)
    {
      this.level = level;
    }

    public Builder strength(int val)
    { strength = val; return this;}
    public Builder vitality(int val)
    { vitality = val; return this;}
    public Builder agility(int val)
    { agility = val; return this;}
    public Builder dexterity(int val)
    { dexterity = val; return this;}
    public Builder intelligence(int val)
    { intelligence = val; return this;}
    public Builder wisdom(int val)
    { wisdom = val; return this;}

    public CharacterEntity build()
    {
      return new CharacterEntity(this);
    }
  }

  private CharacterEntity(Builder builder)
  {
    strength = builder.strength;
    vitality = builder.vitality;
    agility = builder.agility;
    dexterity = builder.dexterity;
    intelligence = builder.intelligence;
    wisdom = builder.wisdom;

    level = builder.level;
  }
  public String toString()
  {
    return "Level: "+level+" {"+strength+", "+vitality+", "+agility+", "+dexterity+", "+intelligence+", "+wisdom+"}";
  }
}

Extra Resources

results matching ""

    No results matching ""