martes, 30 de noviembre de 2010

Patrones de diseño

Un patrón de diseño es una solucion repetida generalmente aplicada a un problema comunmente ocurrente en el diseño de software.

Un patrón de diseño no es una solucion final absoluta que puede transformarse directamente a código, es una descripción o plantilla de como resolver un problema que puede usarse en muchas situaciones diferentes.

Los patrones de diseño pueden acelerar el proceso de desarrollo, al proporcionar paradigmas que muchas veces han sido probados útiles.

Patrones de creación

Estos patrones de diseño tratan acerca de la instanciación de clase. Esta clase puede dividirse en patrones de creación de clases y patrones de creación de objetos. Los patrones de creación de clases usan herencia en el proceso de instanciación y los patrones de creación de objetos usan la delegación para realizar el trabajo.

  • Abstract Factory
Provee una interfaz para crear familias de objetos relacionados o dependientes, sin especificar sus clases concretas.



  • Builder
Separa la construcción de un objeto complejo de su representación de tal manera que el mismo proceso de construcción pueda crear distintas representaciones.



  • Factory Method
Define una interfaz para crear un objeto, pero deja que las subclases decidan que clase instanciar. Permite que una clase delegue la creación de objetos a sus subclases.




  • Object Pool
Evade costosa adquisición y gasto de recursos, mediante el reciclado de objetos que no se encuentran en uso.




  • Prototype
Especifica el tipo de objetos a crear, usando una instancia prototipo y creando nuevos objetos copiando este prototipo.


  • Singleton
Garantiza que una clase sólo tenga una instancia y provee de un punto de acceso global a ella.






Patrones estructurales

Estos patrones de diseño tratan sobre la composicion de clases y objetos. Estos patrones usan herencia para componer interfaces. Definen maneras de componer un objeto para obtener nuevas funcionalidades.

  • Adapter
Transforma la interfaz de una clase en una interfaz que el cliente espera. Este patron permite que distintas clases trabajen en juntas.






  • Bridge
Desempareja la abstraccion de un objeto de su implementacion de tal manera que las dos puedan variar independientemente.



  • Composite
Compone objetos en estructuras tipo árbol para representar jerarquías de parte completa. Permite tratar objetos individuales y composiciones de objetos uniformemente.



  • Decorator
Agrega responsabilidades a un objeto dinámicamente. Provee de una alternativa flexible a subclasificación para extender la funcionalidad.



  • Facade
Provee de una interfaz unificada de un conjunto de interfaces en un subsistema. Define una interfaz de alto nivel para hacer un subsistema fácil de usar.



  • Flyweight
Usa el compartir para soportar grades números de objetos "de grano fino" de manera eficiente.



  • Private Class Data
Controla el acceso de escritura a los atributos de una clase.



  • Proxy
Proporciona un representante de otro objeto para controlar el acceso al objeto que está siendo representado.









Patrones de comportamiento

Estos patrones tratan acerca de la comunicacion entre objetos y conjuntos de estos.

  • Chain of responsibility
Evita emparejar el objeto que envía una petición con el objeto que recibe esa petición, al permitir que mas de un objeto pueda tomar la responsabilidad de la petición enviada. Encadena los objetos que podrán recibir la petición y pasa la petición a lo largo de la cadena hasta que un objeto acepte la petición.




  • Command
Transforma una peticion en un objeto de tal manera que puedas catalogar clientes con diferentes peticiones, mantener un registro de las peticiones y soportar el deshacer operaciones.



  • Interpreter
Permite definir una representación de la gramática de un lenguaje para usarla en un interprete del lenguaje.



  • Iterator
Provee de una manera de acceder secuencialmente a los elementos de una colección sin exponer su representación interna.



  • Mediator
Crea un objeto mediador que encapsula el cómo un conjunto de objetos interactúan. Mediator promociona la organización de como interactúan los objetos, sin necesidad de que entre ellos mismos se referencíen.



  • Memento
Sin violar el principio de encapsulación, captura y externaliza el estado interno de un objeto de manera que el objeto pueda regresar al estado después.







  • Null Object
Encapsula la ausencia de un objeto al proveer de una alternativa que ofrece un comportamiento predefinido de "hacer nada". Permite que el comportamiento de hacer nada, sea el valor predefinido de un objeto.




  • Observer
Define una dependencia de uno a muchos entre objetos de tal manera que cuando un objeto cambie su estado, todas las dependencias del objeto sean notificadas y actualizadas automáticamente.



  • State
Permite que un objeto cambie su comportamiento al cambiar su estado. El objeto parecerá que cambio de clase.



  • Strategy
Crea un conjunto de algoritmos encapsulados intercambiables. Permite que un algoritmo varíe independientemente de los clientes que los usan.



  • Template method
Otorga el derecho a subclases de re definir ciertos pasos o procedimientos de un algoritmo sin cambiar la estructura de tal algoritmo.


  • Visitor
Permite definir una operación nueva sin cambiar las clases de los elementos en los cuales opera.



Bibliografía (e imágenes tomadas de):

2 comentarios:

  1. Great post. You may be interested by the UML online modeler called GenMyModel. It designs UML-compliant models in a web-browser and generates code. http://www.genmymodel.com

    ResponderEliminar