Null Object Pattern in Java

empty object mode

In the Null Object Pattern, an empty object replaces the check of a NULL object instance. Null objects do not check for null values, but instead react to a relationship that does nothing. Such Null objects can also provide default behavior when data is not available.

In the empty object pattern, we create an abstract class that specifies the various operations to be performed and an entity class that extends the class, and also creates an empty object class that does not implement any implementation of the class. Use seamlessly where you need to check for null values.


We will create an AbstractCustomer abstract class that defines the operation (here, the name of the client), and an entity class that extends the AbstractCustomer class. The factory class CustomerFactory returns the RealCustomer or NullCustomer object based on the name passed by the client.

NullPatternDemo, our demo class uses CustomerFactory to demonstrate the use of empty object patterns.


Step 1

Create an abstract class.

public abstract class AbstractCustomer { protected String name; public abstract boolean isNil(); public abstract String getName(); }

Step 2

Create an entity class that extends the above classes.

public class RealCustomer extends AbstractCustomer { public RealCustomer(String name) { = name; } @Override public String getName() { return name; } @Override public boolean isNil() { return false; } }

public class NullCustomer extends AbstractCustomer { @Override public String getName() { return "Not Available in Customer Database"; } @Override public boolean isNil() { return true; } }

Step 3

Create the CustomerFactory class.

public class CustomerFactory { public static final String[] names = {"Rob", "Joe", "Julie"}; public static AbstractCustomer getCustomer(String name){ for (int i = 0; i < names.length; i++) { if (names[i].equalsIgnoreCase(name)){ return new RealCustomer(name); } } return new NullCustomer(); } }

Step 4

Use CustomerFactory to get the RealCustomer or NullCustomer object based on the name passed by the client.

public class NullPatternDemo { public static void main(String[] args) { AbstractCustomer customer1 = CustomerFactory.getCustomer("Rob"); AbstractCustomer customer2 = CustomerFactory.getCustomer("Bob"); AbstractCustomer customer3 = CustomerFactory.getCustomer("Julie"); AbstractCustomer customer4 = CustomerFactory.getCustomer("Laura"); System.out.println("Customers"); System.out.println(customer1.getName()); System.out.println(customer2.getName()); System.out.println(customer3.getName()); System.out.println(customer4.getName()); } }

Step 5

Executing the program, outputting results:

Not Available in Customer Database
Not Available in Customer Database

javacodegeeks is optimized for learning.© javacodegeeks .
All Right Reserved and you agree to have read and accepted our term and condition