Latest web development tutorials

Null Object Model

Empty object model (Null Object Pattern), and an empty object substituted check for NULL object instance. Null objects are not check for null values, but not the reaction a relationship of any action. Such Null objects can also provide default behavior when data is not available.

Empty object model, we create a designated entity of the abstract class and extend this class to perform a variety of operations, but also create a class did not do any of this empty object class implements the empty object class seamlessly use in place need to check for null values.

achieve

We will create a custom action (in this case, the customer's name)AbstractCustomerabstract class, and extends the entity classesAbstractCustomerclass.CustomerFactoryfactory class name based on the customer to deliver or returnRealCustomerNullCustomer object.

NullPatternDemo,we demonstrate the use ofCustomerFactoryclass to demonstrate the use of an empty object model.

Null Object pattern UML diagram

step 1

Create an abstract class.

AbstractCustomer.java

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

Step 2

Create extends the entity classes above class.

RealCustomer.java

public class RealCustomer extends AbstractCustomer {

   public RealCustomer (String name) {
      this.name = name;		
   }
   
   @Override
   public String getName () {
      return name;
   }
   
   @Override
   public boolean isNil () {
      return false;
   }
}

NullCustomer.java

public class NullCustomer extends AbstractCustomer {

   @Override
   public String getName () {
      return "Not Available in Customer Database";
   }

   @Override
   public boolean isNil () {
      return true;
   }
}

Step 3

CreateCustomerFactoryclass.

CustomerFactory.java

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

UseCustomerFactory,based on the client's name to pass to getRealCustomerorNullCustomerobject.

NullPatternDemo.java

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

Verify output.

Customers
Rob
Not Available in Customer Database
Julie
Not Available in Customer Database