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.