Null Object Pattern

Pros

  • e

Cons

  • e

Example Explanation

[UML]

class Main {
  public static void main(String[] args) {
    Player player = new Player();

    player.setWeapon("Mace");
    System.out.println(player); //Current Weapon: Mace [ +7 ]

    player.setWeapon("Axe");
    System.out.println(player); //Current Weapon: {Weapon Not Found}

    player.setWeapon("Sword");
    System.out.println(player); //Current Weapon: Sword [ +5 ]

    player.setWeapon("Bat");
    System.out.println(player); //Current Weapon: {Weapon Not Found}
  }
}

abstract class Weapon{

  private int damage;
  private String name;

  public Weapon(int damage, String name){
    this.damage = damage;
    this.name = name;
  }

  @Override
  public String toString(){ return name+" [ +"+damage+" ]"; }


}

class Mace extends Weapon{
  public Mace(){
    super(7, "Mace");
  }
}

class Sword extends Weapon{
  public Sword(){
    super(5, "Sword");
  }
}

class NullWeapon extends Weapon{
  public NullWeapon(){
    super(0, "");
  }

  @Override
  public String toString(){
    return "{Weapon Not Found}";
  }
}

class WeaponFactory{

  public static Weapon createWeapon(String name){
    switch(name){
      case "Mace": return new Mace();
      case "Sword": return new Sword();
    }
    return new NullWeapon();
  }
}

class Player{

  private Weapon weapon;

  public void setWeapon(String name){
    this.weapon = WeaponFactory.createWeapon(name);
  }

  @Override
  public String toString(){
    return "Current Weapon: "+ weapon;
  }

}

Extra Resources

results matching ""

    No results matching ""