Busqueda local

Loading

lunes, 14 de marzo de 2011

Clasificación de los Patrones

Desde hace algunas semanas he estado trabajando con patrones y he publicado algunos post donde hablo de ellos, incluso publique un post donde brevemente explico que son, lo puedes leer aquí.
Pero me falto hablar de cómo se clasifican, así que en este breve post voy a presentarles un breve resumen, de cómo se clasifican y cuales pertenecen a cada clasificación.
Algunos ya fueron ejemplificados en este Blog, porque ya los he usado en algún proyecto, y mi intensión es que en este Blog solo haya Post donde hable de código que sea resultado de mi experiencia personal.
Los patrones de diseño fueron clasificados según su nivel de abstracción en tres:
  • Arquitectura: Esquemas fundamentales para sistemas de software.
  • Diseño: Esquemas para definir relaciones al construir sistemas de software.
  • Dialectos: Lenguajes de programación.
Según Gang of Four los principales patrones se dividen en tres:

Creacionales

Factory
Permite trabajar con varios tipos de clases, permite encapsular el tipo de objeto que se está usando.
Builder
Es muy parecido al Factory, pero se recomienda para creación de objetos complejos en un solo punto.
Prototype
Crea objetos, a partir de una instancia ya existente del mismo.
Singleton
Se emplea cuando se desea usar una sola instancia de una clase.
 

Estructurales

Adapter
Adapta una interfaz para que pueda ser utilizada por una clase que de otro modo no podría utilizarla.
Bridge
Separa la abstracción de la implementación.
Composite
Nos permite tratar un grupo de objetos como si fueran uno solo.
Decorator
Se emplea para agregar funcionalidades de forma dinámica.
Facade
Nos permite por medio de una interface única ocultar la complejidad de subsistemas.
Flyweight
Nos ayuda para evitar que en nuestro código no haya redundancia, por código repetido.
Proxy
Se emplea para crear un representante de un objeto.
 

De comportamiento

Chain of responsibility
Nos facilita un proceso cuando es necesario que un grupo de objetos reciban solicitudes y deban responder de la misma manera.
Command
Se emplea para encapsular una operación dentro de un objeto.
Interpreter
Se emplea para realizar interpretaciones de lenguaje
Iterator
Para controlar colecciones de objetos, y poder interactuar con ellos.
Mediator
Es un objeto que sirve para interconectar clases, para que funciones como un conjunto.
Memento
Se emplea para poder deshacer cambios en el sistema.
Observer
Su implementación nos facilita la notificación a un grupo de objetos, cuando hay un cambio.
State
El objeto cambiara su comportamiento según el estado en el cual se encuentre.
Strategy
Permite determinar en tiempo de ejecución que método ejecutar para solucionar un problema.
Template
Permite definir un algoritmo de tal forma que podamos delegar partes de la operación, pero conservando la estructura.
Visitor
Nos permite definir nuevas operaciones sobre objetos sin cambiar las clases sobre las que opera.
 

Comentario final

Como en otras publicaciones anteriores, no pretendo repetir aquí lo que pueden encontrar con mayor detalle en otros sitios en Internet, así que solo me he limitado a enumerarlos con una breve explicación.
Aun que solo he presentado algunos de ellos en ejemplos, lo que pretendo es postearlos, cuando los deba usar en un proyecto en la vida real, no solo para hacer un ejemplo de ellos.

No hay comentarios:

Publicar un comentario