Patrones de diseño Flashcards
Builder
este patrón permite crear objetos que habitualmente son complejos utilizando otro objeto más simple que los construye paso por paso. Se utiliza en situaciones en las que debe construirse un objeto repetidas veces o cuando este objeto tiene gran cantidad de atributos y objetos asociados, y en donde usar constructores para crear el objeto no es una solución cómoda.
Factory Method
o patrón método Factoría, describe un enfoque de programación que sirve para crear objetos sin tener que especificar su clase exacta. Esto quiere decir que el objeto creado puede intercambiarse con flexibilidad y facilidad. Otra definición: este patrón se empleará cuando definamos una clase a partir de la que se crearán objetos pero sin saber de qué tipo son, siendo otras subclases las encargadas de decirlo.
Singleton
(instancia única): Este patrón se emplea en aquellas situaciones en las que buscamos que ÚNICAMENTE se declare UNA INSTANCIA DE ESA CLASE, ninguna más. (ej: dentro de usuario, que solo haya un administrator)
Adapter
adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla. Así, dicho patrón es utilizado cuando tenemos interfaces de software incompatibles, las cuales a pesar de su incompatibilidad tienen una funcionalidad similar. Este patrón es implementado cuando se desea homogeneizar la forma de trabajar con estas interfaces incompatibles, para lo cual se crea una clase intermedia que funciona como un adaptador. Esta clase adaptador proporcionará los métodos para interactuar con la interface compatible
Facade
dicho patrón tiene la característica de ocultar la complejidad de interactuar con un conjunto de subsistemas proporcionando una interface de alto nivel, la cual se encarga de realizar la comunicación con todos los subsistemas necesarios. La fachada es una buena estrategia cuando requerimos interactuar con varios subsistemas para realizar una operación concreta ya que se necesita tener el conocimiento técnico y funcional para saber qué operaciones de cada subsistema tenemos que ejecutar y en qué orden, lo que puede resultar muy complicado cuando los sistemas empiezan a crecer demasiado.
Observer
define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y actualicen automáticamente todos los objetos que dependen de él. La responsabilidad de actualización puede residir en los observadores.
State
patrón que permite a un objeto alterar su comportamiento cuando su estado interno cambia. Parece como si el objeto cambiara su clase. La idea es muy similar a las máquinas de estado finitas.
Strategy
este patrón se centra en definir la forma en la que se produce el intercambio de mensajes entre distintos componentes. Básicamente, su propósito es mantener un conjunto de algoritmos (estrategias) de entre los cuales el objeto cliente puede elegir aquel que le conviene e intercambiarlo dinámicamente según sus necesidades. Ejemplos: funcionalidad de exportar que permite elegir distintos formatos (PDF, CSV, XML), manejar las opciones de visualización de un texto (alinear izquierda, centrar), calcular ruta GPS basándonos en distintos vehículos (a pie, en bici)
Composite
Permite tratar objetos compuestos como si de uno simple se tratase
Bridge
Desacopla una abstracción de su implementación de manera que las dos puedan evolucionar independientemente
Abstract Factory
El problema a solucionar por este patrón es el de crear diferentes familias de objetos relacionados o que dependen entre sí, sin especificar sus clases concretas