Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

PATRÓN NULL OBJECT

No description
by

Genny Castañeda

on 30 April 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of PATRÓN NULL OBJECT

PATRON DE COMPORTAMIENTO NULL OBJETC
SOLUCIÓN
El diagrama de clases que muestra la organización de las clases que participan en el patrón Null Object es el siguiente:
¿QUIENES PARTICIPAN?
Cliente:
Requiere un colaborador.
AbstractObject:
Declara la interfaz para los colaboradores de Cliente.
Implementa el comportamiento por defecto para la interfaz común a todas las clases.
RealObject:
Define una clase derivada concreta de AbstractObject cuya instancia proporciona comportamiento útil que Cliente espera.
NullObject:
Proporciona una interfaz idéntica a AbstractObject para que un objeto nulo pueda ser sustituido por un objeto real.
Implementa la interfaz para "no hacer nada". Qué es lo que exactamente significa "no hacer nada", depende de la clase de comportamiento que Cliente espera.
Cuando existe más de una manera de "no hacer nada", más de una clase NullObject puede ser necesaria.
¿QUE HACE?
El patrón de diseño Null Objetc se describe en la programación orientada a objetos, como el encargado de describir los usos y el comportamiento de ausencia de los objetos nulos de comportamiento neutral.
OBJETIVO
Facilita una alternativa para utilizar null para indicar la ausencia de un objeto al que delegue una operación. Utilizando null para indicar la ausencia de cada uno de los objetos requeridos se realiza una pregunta para ver si es null antes de cada llamada a los métodos de otros objetos. En lugar de utilizar null, el patrón Null Object utiliza una referencia a un objeto que no hace nada. En resumen, un diseño en donde "nada resultará de nada".

¿CUANDO USARLO?
Una clase delega una operación a otra clase. La clase que delega normalmente no presta atención sobre como la otra clase implementa la operación. Sin embargo, algunas veces se requiere que la operación sea implementada sin hacer nada.
Si quieres que la clase que delega la operación la delegue en todos los casos, incluyendo el caso de no hacer nada.
Un objeto requiera de un colaborador. El patrón Null object no introduce esta colaboración; hace que se use una colaboración que ya existía.
Alguna de las instancias del colaborador no haga nada.
Se desee abstraer el manejo del "null" fuera del cliente.
ALGUNAS REGLAS PRACTICAS
Si algunos clientes esperan que el objeto nulo no haga nada de una manera y otra, múltiples clases Null object serán necesarias.
Si el comportamiento de no hacer nada debe ser configurado en tiempo de ejecución, la clase Null object requerirá variables adicionales para que el cliente pueda especificar cómo Null object debería "no hacer nada" .
Un Null object no se transforma para convertirse en un objeto real.
Si éste es un objeto único que debe mutar de un objeto que no hace nada a uno real, pues debe ser implementado con el patrón State o tal vez el patrón Proxy. En este caso, puede ser usado un Null state o el Proxy puede contener un Null object.
Un Null object puese ser usado para permitir a un Visitor "visitar" sin problemas una jerarquía y manipular una situación nula.
Null object es un colaborador concreto que actúa como un colaborador que el cliente necesita.
El comportamiento null no se diseña para ser mezclado dentro de un objeto que necesita algún comportamiento que no haga nada.
CONSECUENCIAS
El patrón Null Object desahoga una clase que delega una operación a otra clase con la responsabilidad de implementar la versión de no hacer nada de esa operación. Esto tiene como consecuencia un código más simple que no tiene que tener un test por null antes de llamar al método que implementa la operación delegada. Resulta un código más fiable porque el patrón Null Object elimina algunos casos de crear bugs (errores en los programas) por omitir el test por null en el código.
El patrón Null Object incrementa el número de clases en el programa. Si no hay todavía una clase o interfaz en el papel de Operación Abstracta, entonces el patrón Null Object podría introducir más complejidad al introducir clases adicionales que lo alejan de la simplificación del código.
RELACIÓN CON OTROS PATRONES
EJEMPLO
EJERCICIO
Singleton Si las instancias de una clase OperacionNull no contienen información de instancias específicas, entonces puedes ahorrar tiempo y memoria implementando la clase OperacionNull como una clase singleton.
Un Null object puede ser un caso especial del patrón Strategy. El patrón Strategy especifica varias clases concretas como diferentes enfoques para cumplir con una tarea. Si uno de estos puntos de vista es consistente con "no hacer nada", dicha clase concreta es un Null object.
INGENIERIA DE SOFTWARE
GENNY CASTAÑEDA
ANDRA FIGEROA
Full transcript