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