Principios de Programación Orientada a Objetos y patrones de diseño
Principios de la programación orientada a objetos
- Encapsula lo que varia
- Favorece la composición de objetos frente a la herencia de clases
- Programa para interfaces no para implementaciones
- Esfuérzate por un diseño débilmente acoplado entre objetos que interactúan
Patrones de diseño
¿Que es un patrón de diseño?
En ingeniería de software un patrón de diseño es una solución que alguien ya ha pensado para un problema que se presenta de forma habitual.
¿Cuales son los elementos esenciales de un patrón de diseño?
En general un patrón de diseño tiene los siguiente cuatro elementos:
- Nombre del patrón: Describe en una o dos palabras un problema de diseño junto con su solución y su consecuencia.
- Problema: Describe cuando aplicar el patrón. Explica el problema y su contexto. Es posible que se incluyan una serie de condiciones que han de cumplirse para que tenga sentido la aplliicación del patrón.
- Solución: Describe los elementos que constituyen el diseño, sus relaciones, responsabilidades y colaboradores. No describe una implementación en concreto. Se trata más bien de una plantilla que puede usarse para solucionar un problema abstracto.
- Consecuencias: Son los los resultados obtenidos tras la aplicación del patrón así como sus ventajas e inconvenientes.
Tipos de patrones
Para estudiar los patrones de diseño se hace una distinción en función de su propósito entre:
- Patrones de creación: Están relacionados con el proceso de creación de objetos.
- Patrones estructurales: Tratan sobre la composición de clases y objetos
- Patrones de comportamiento: Caracterizan el modo en el que las clases y objetos interactuan.
Sin añadimos el ámbito al que afecta el patrón (Clase o Método) obtenemos la siguiente tabla.
Propósito | |||
Ámbito | Creación | Estructurales | Comportamiento |
Clase | Factory Method | Adapter(de clase) | Interpreter |
Template Method | |||
Objeto | Abstrac Factory | Adapter (de objetos) | Chain of Responsability |
Builder | Bridge | Command | |
Prototype | Composite | Iterator | |
Singleton | Decorator | Mediator | |
Façade | Memento | ||
Flyweight | Observer | ||
Proxy | State | ||
Strategy | |||
Visitor |