miércoles, 2 de enero de 2013

Encapsular lo que varia




Termine el libro de Patrones de Erich Gamma. La verdad muy bueno, me intereso mucho como muestra los patrones desde un lenguaje dinamicamente tipado como SmallTalk y desde otro estaticamente tipado como C++. Les dejo unos párrafos que me gustaron, que tratan de describir la mayoría de los patrones de comportamiento:

Encapsular aquello que puede variar es el tema de muchos patrones de comportamiento. Cuando un determinado aspecto de un programa cambia con frecuencia, estos patrones definen un objeto que encapsula de dicho aspecto. De esta manera, otras partes del programa pueden colaborar con el objeto siempre que dependan de ese aspecto. Los patrones normalmente definen una clase abstracta que describe el objeto encapsulado, y el patrón toma su nombre de ese objeto. Por ejemplo:

  • Estrategia: encapsula un algoritmo.
  • Estado: encapsula un comportamiento dependiente del estado.
  • Mediador: encapsula el protocolo entre objetos.
  • Iterador: encapsula el modo de acceder y recorrer una colección. 

Estos patrones describen aspectos de un programa que probablemente cambien. La mayoría de los patrones tienen dos tipos de objetos: el nuevo objeto que encapsula y el objeto existente que usa un nuevo objeto creado. Normalmente si no fuera por el patrón, la funcionalidad de los nuevos objetos seria una parte integral de los existentes. Por ejemplo, el código de una Estrategia probablemente estaría ligado al contexto de la estrategia, y el código de un Estado se encontraría implementado directamente en el contexto del estado.

Pero no todos los patrones de comportamiento de objeto dividen así la funcionalidad. Por ejemplo, el patrón Chain of Responsibility trata con un numero indeterminado de objetos, cada uno de los cuales puede que ya exista en el sistema

El patrón Chain of Responsibility muestra otra diferencia entre los patrones de comportamiento: no todos definen relaciones de comunicación estática entre las clases. El patrón Chain of Responsibility describe el modo de comunicación entre un numero indefinido de objetos. Otros patrones usan objetos que se pasan como parámetros.

Como conclusión solo les puedo recomendar que lean "Patrones de Diseño" de Erich Gamma.