Protones De Diseño
Enviado por yolle • 27 de Febrero de 2015 • 2.333 Palabras (10 Páginas) • 449 Visitas
Patrones De Diseño
Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias. Los patrones de diseño brindan una solución ya probada y documentada a problemas de desarrollo de software que están sujetos a contextos similares. Se debe tener presente los siguientes elementos de un patrón: su nombre, el problema (cuando aplicar un patrón), la solución (descripción abstracta del problema) y las consecuencias (costos y beneficios).
Aunque se llaman "patrones de diseño", en realidad no están ligados al ámbito del diseño. Un patrón parece apartarse de la manera tradicional de pensar sobre el análisis, diseño e implementación. En cambio, un patrón abarca una idea completa dentro de un programa, y por lo tanto puede también abarcar las fases de análisis y diseño de alto nivel. Sin embargo, dado que un patrón a menudo tiene una implementación directa en código, podría no mostrarse hasta el diseño de bajo nivel o la implementación.
Clasificación De Patrones
Patrones Creacionales: Trata de la Inicialización y configuración de objetos. Habitualmente esto incluye aislar los detalles de la creación del objeto, de forma que su código no dependa de los tipos de objeto que hay, por lo tanto, no tenga que cambiarse cuando añada un nuevo tipo de objeto.
Patrones Estructurales: Separan la interfaz de la implementación. Se ocupan de cómo las clases y objetos se agrupan, para formar estructuras más grandes.
Patrones de Comportamiento: Más que describir objetos o clases, describen la comunicación entre ellos. Éstos encapsulan procesos que quiere que se ejecuten, como interpretar un lenguaje, completar una petición, moverse a través de una secuencia (como en un iterador) o implementar un algoritmo.
Ejemplos de utilización
Nombre: Retroalimentación visual de navegación directa.
Problema: El usuario tiene dificultades para acceder directamente a las ventanas del sistema informático y desconoce cual de entre ellas es la ventana actual de trabajo.
Principio de usabilidad: Guiar al usuario y dar el control de la interacción al usuario.
Contexto: Dada una gran cantidades de información facilitar al usuario los medios para navegar directamente entre las ventanas del sistema informático.
Fuerza: El sistema debe siempre mostrar la lista de ventanas navegables.
Solución: Permitir al usuario a seleccionar directamente las ventana de la interfaz y mostrar continuamente la ventana activa y desactivas.
Consecuencias: El acceso directo a las ventanas del sistema no solo beneficia la manipulación directa de ellas sino también la manipulación de los objetos que retienen ya que cada ventana es definida en términos de sus objetos de interacción (e.g. iconos, ítems de menú, radio botones) los cuales permiten la adquisición y la restitución de información que requiere el usuario.
Los patrones de diseño tienen como objetivo, la reutilización de ideas, no de código, es por esto que es importante entender los conceptos para poder identificar las partes del sistemas donde encajan estos patrones.
Entre los Patrones de diseño se encuentran:
• Estrategia (Strategy): Define una familia de algoritmos intercambiables y nos ayuda a generar decisiones, es un excelente patrón en algunos casos de herencia, permite usar relaciones ‘Has a’(‘Tiene un’) en lugar de ‘Is a’(‘Es un’).
• Fabrica (Factory): Define una interface para la creación de objetos, en ocasiones en que según un parámetro se genera un objeto de un tipo u otro se puede este patrón, existe el patrón Abstract Factory que permite que diversas subclases definan la creación de esos objetos.
• Adaptador(Adapter): Permite que dos clases interactúen entre si en caso de que no sean compatibles sus interfaces, este patrón es muy útil en casos donde existen 2 o más desarrolladores o equipos de desarrolladores.
• Singleton: Uno de los patrones más importantes, garantiza que solamente se genere una instancia de una Clase, este patron es muy usado y permite optimizar sistemas, tanto en velocidad como en uso de memoria.
• Iterator: Nos permite manejar y recorrer colecciones de datos de una manera más sencilla.
• Observador(Observer): En muchas ocasiones necesitamos que después de cierta acción de un objeto, se dispare un proceso de otro objeto, algo así como una notificación automática, este patrón resuelve este problema.
• Proxy: Nos permite generar versiones locales de objetos remotos.
• Decorador(Decorator): Permite agregar funcionalidades a objetos, sin tener que modificarlos o utilizar herencia, de hecho se pueden compartir funcionalidades entre diferentes tipos de objetos.
• Registro Activo(Active Record): Simplifica la manipulación de bases de datos.
• Fachada (Facade): Nos permite crear una interfaz común para diversos objetos
framework
Es un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia, para enfrentar y resolver nuevos problemas de índole similar.
En el desarrollo de software, un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto. Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio, y provee una estructura y una especial metodología de trabajo, la cual extiende o utiliza las aplicaciones del dominio.
Un framework es una colección organizada de clases que constituyen un diseño reutilizable para un dominio específico de software. Contiene un conjunto de librerías, componentes de software y directrices arquitectónicas que ofrece al desarrollador un kit de herramientas completo para construir una aplicación de principio a fin, siempre teniendo en cuenta que es necesario adaptarlo a cada aplicación
...