GoConqr has a new look! Let us know what you think.

Mind map

Patrón Prototype

DICSOR YENCI HERNÁNDEZ RUÍZ Ingenieria del Software Spanish

Map content

Patrón Prototype

  1. “Especificar el tipo de objetos que se crearán utilizando una instancia prototipada y crear nuevos objetos realizando copias de ese prototipo.”

  2. El concepto de este patrón es simple: en lugar de crear un objeto, se clona, es decir, se realiza una copia exacta de otro objeto dado, denominado prototipo.

  3. Entran en juego tres elementos:

    • Cliente: clase que solicita al prototipo que se clone.
    • IPrototipo: interfaz o clase abstracta que define la operación de clonado.
    • PrototipoConcreto: implementa IPrototipo y su método Clone() para proceder al clonado del objeto.
  4. Implementación del patrón

    • En .NET este proceso es sencillo, ya que nos ofrece la interfaz ICloneable que expone el método Clone(), método en el que habrá que codificar el proceso de copia.
      • Además de ofrecer el método Clone(), .NET también ofrece un método, MemberwiseClone(), que automáticamente realiza una copia del objeto por nosotros, evitándonos el proceso de copiar elemento por elemento de forma manual.
  5. Clonación superficial y clonación profunda

    • Cuando invocamos el método MemberwiseClone() observamos que en su descripción indicaba que se realizaba una clonación shallow o superficial. Esto significa que el clonado se realiza a nivel de bits, por lo que los objetos contenidos dentro del objeto a clonar no se clonarán también, sino que se clonará únicamente la referencia del objeto. Por lo tanto, ambos objetos clonados apuntarán al mismo objeto. Esto es lo que se conoce como clonación superficial. El proceso por el cual se clonan los objetos incluidos en el objeto a clonar en lugar de copiar sus referencias se denomina clonación profunda.
  6. ¿Cuándo utilizar este patrón?

    • Este patrón está indicado en los casos en los que el coste de generar una nueva instancia sean altos en comparación al coste de realizar una copia de una instancia ya existente. Por ejemplo, imaginemos que tenemos una clase que se encarga de almacenar datos de una sesión web. Al instanciar esta clase, el objeto se comunica con un servidor externo para realizar un proceso de autenticación mediante unas credenciales. Este proceso es costoso, por lo que si a lo largo de la ejecución del programa fuese necesario instanciar un nuevo objeto con los mismos datos, el proceso de instanciación requerirá consumir una gran cantidad de recursos. Sería más sencillo realizar una copia exacta del objeto anterior, evitando de este modo acceder a un servidor externo.
      • Un escenario real en el que se suele utilizar este patrón suele ser el de la clonación de figuras en programación 2D/3D, así como el de paletas de colores.

Information

Description
Ingenieria del Software Mind Map on Patrón Prototype, created by DICSOR YENCI HERNÁNDEZ RUÍZ on 12/05/2018.
Views
1
Rating

More on Patrones de diseño

Feedback

What is it about?

What do you think of the new look?

How do you like it?