Hace unas semanas un amigo me recomend贸 esta pagina de un nuevo framework Qi4j que se centra en el desarrollo del modelo de dominio y usa conceptos de AOP, DI (Dependency Injection) y DDD (Domain Driven Design).
El framework es una implementaci贸n de un nuevo paradigma de programaci贸n que es la Programaci贸n Orientada a Compuestos (Composites) (COP - por sus siglas en Ingles) usando Java 5 puro.
Los principios de la COP son:
- El comportamiento de un objeto depende del contexto.
- El desacoplamiento es una virtud.
- Las reglas de negocio importan mas.
- Las Clases han muerto, larga vida a las Interfaces.
Ellos argumentan que la Programaci贸n Orientada a Objetos (OOP) tiene ciertos problemas para realmente modelar el ciclo de vida de los objetos. Por ejemplo, un objeto no siempre tiene los mismos atributos y estos pueden variar (tener menos o mas atributos) en el tiempo, incluso el comportamiento de un objeto no es el mismo siempre ya que puede variar seg煤n el contexto donde se encuentre ejecutando.
Este tipo de cosas ha sido muy dif铆cil implementarlas usando OOP y aunque se pueden implementar deber铆a ser mas "natural".
A todos nos ha pasado que empezamos un sistema haciendo el an谩lisis de los conceptos y reglas de negocio y buscamos hacer un dise帽o que represente y cumpla con todos esos requisitos lo mejor posible. Pero cuando llega la hora de codificar terminamos enfocando mas nuestros esfuerzos en la infraestructura y terminamos teniendo un modelo de dominio an茅mico (Martin Fowler explica esto aqu铆).
La Programaci贸n Orientada a Compuestos esta muy influenciada por el libro de Erick Evans (Domain Driven Design) donde propone conceptos y patrones de dise帽o para dise帽ar sistemas mas enfocados al modelo de dominio.
En la COP existen dos niveles de composici贸n:
- Un nivel de composici贸n para ensamblar objetos compuestos a partir de piezas mas peque帽as llamadas Fragmentos.
- Y un segundo nivel de composici贸n para ensamblar M贸dulos a partir de compuestos (objetos del primer nivel de composici贸n), Capas a partir de M贸dulos y terminar con una Aplicaci贸n compuesta de Capas.
Los Fragmentos a partir de los cuales se puede formar un objeto compuesto son:
- Mixins. Representan el estado de un objeto compuesto.
- Restricciones (Constraints). Reglas de validaci贸n tanto de entrada como de salida para los argumentos.
- Intereses (Concerns). Interceptan llamadas de m茅todos. Su uso se aplica generalmente a comportamientos que aplican a todo el sistema (cross-cutting behaviours).
- Efectos Secundarios (Side Effects). Se ejecutan despu茅s de la ejecuci贸n de un m茅todo pero no influyen en los datos de salida que entregan los m茅todos.
En fin, el framework Qi4j se ve muy interesante y vale la pena echarle un ojo para ver la forma en que trabaja.
Links de inter茅s:
- Resumen del libro de Erick Evans DDD. http://www.infoq.com/minibooks/domain-driven-design-quickly
Welcome to my corner of the internet! I'm a Software Developer trying to improve my craft every day
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment