Skip to content

Instantly share code, notes, and snippets.

@tiagox
Last active May 21, 2018 21:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tiagox/ed1fbf99b28c5e345ccac13f604d86a6 to your computer and use it in GitHub Desktop.
Save tiagox/ed1fbf99b28c5e345ccac13f604d86a6 to your computer and use it in GitHub Desktop.

Patrones de diseño

Solución genérica a un problema recurrente

Los patrones de diseños pueden estar relacionados entre sí.

Si no hay problema, no hace falta usar un patrón. Evitar inventar el problema para poder usar un patrón.

Antipatrón: un solución que parece resolver un problema, pero es todo lo contrario.

Tipos

  • Creacionales.
  • Estructurales.
  • De comportamiento.

Patrón Singleton (Creacional)

Objetivo:

Asegurarse de que un objeto tiene uno y solo una instancia ejemplar y proveer un unico punto de acceso a dicho objeto.

Muchas veces es considerado un antipatrón.

Requisitos:

  • Necesito un unico ejemplar.
  • Necesito un unico punto de acceso a dicho ejemplar.

Solución:

  1. Un constructor privado: que no me permita crear instancias desde fuera de la clase.
  2. Una variable que sea estática que represente a la instancia del unico objeto.
  3. Un método estatico que me permita acceder a esta instancia privada.

Patrón Adapter (Estructural. A.k.a. Wrapper)

Objetivo:

Convertir la interfaz de una clase para poder ser usada por otra que espera una interfaz diferente a la original.

Requisitos:

  • Debe existir un componente que será adaptado y que posiblemente no pueda modificar.

Patrón Composite (Estructural)

Objetivo:

Componer objetos en jerarquías parte-todo y permitir a los clientes tratar objetos simples y compuestos de la misma forma.

Combina objetos en estructuras de arbol para representar jerarquias de parte-todo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos.

Participantes:

  • Component: Declara la interfaz para los objetos de la composicion, es la interfaz de acceso y manipulacion de los componentes hijo e implementa algunos comportamientos por defecto.
  • Client: Manipula objetos atravez de la interfaz proporcionada por Component.
  • Composite: Define el comportamiento de los componentes compuestos, almacena a los hijos e implementa las operaciones de manejo de los componentes.
  • Leaf: Definen comportamientos para objetos primitivos del compuesto.

Bibliografía

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment