Refactorización/Introducir objeto nulo

se usa cuando hay muchas comprobaciones de si un valor es null, y se hace sustituyendo el valor por un objeto nulo

Sustituir el valor null por un objeto nulo.

editar

- La esencia del polimorfismo es que en vez de preguntarle a un objeto de qué tipo es y a continuación invocar a algún comportamiento basado en dicho tipo, simplemente invocamos al comportamiento

- El propio objeto, dependiendo de su tipo, hará lo que tenga que hacer (polimorfismo)

- Uno de los ejemplos menos intuitivos de polimorfismo es cuando tenemos un valor nulo en un campo

    // clase cliente 
    if (customer == null)
      plan = BillingPlan.basic();
    else 
      plan = customer.getPlan(); 




    class NullCustumer extends Customer { 
      boolean isNull() { return true;) 
      // metodos que hereda de Custumer con la logica especifica de objeto 
      nulo 

    class Customer { 
     boolean isNull() { return false;)
    static Customer newNull() 
     { return new NullCostumer();} 
     // los metodos comunes de Custumer no nulo 

    // Clase cliente 
    Customer getCustomer() 
    { if (_customer == null) 
     return Customer.newNull() // factory method 
     else return _customer; 
    } 
    .. 

- Los objetos nulos son siempre constantes,Por tanto, los implementamos usando el patrón Singleton - Cada vez que solicitamos una persona que no existe, obtendremos la misma instancia de la clase NullCustomer - Tienen sentido cuando la mayoría de los clientes esperan la misma respuesta.