Ver Mensaje Individual
  #12 (permalink)  
Antiguo 08/05/2014, 07:08
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Duda con funcionamiento y organización de Traits

Cita:
Iniciado por guardarmicorreo Ver Mensaje

¿Cómo se podría resolver el problema de los Traits desacoplando las clases unas de otras?
Y por qué querrías desacoplarlas? Como para mí los traits son herencia múltiple disfrazada, eso es equivalente a preguntarse cómo desacoplar una clase de su clase base.No quieres hacer eso.

Considero un sistema acoplado cuando existen dependencias entre clases, y no son completamente necesarias.
Ejemplo: una clase A que gestiona pedidos, que usa una clase B para enviar emails.Para gestionar un pedido, no es absolutamente necesario enviar un email. A su vez, mañana podríamos necesitar que, además de enviar un email, envíe un SMS o quién sabe qué.Lo que quieres es que la clase que sea, haga su trabajo, y exclusivamente su trabajo (aunque a nivel de negocio, la creacion de un pedido implique que se envie un email, a nivel de responsabilidad de código, la clase Pedido no debería enviar ningún email).
La programación orientada a eventos es una solución sencilla.Cuando un pedido se crea, lanza un evento de "Pedido creado", y alguien que está subscrito a ese evento, lanza un email.Pero las clases Pedido y Email no se conocen entre sí.
A eso es a lo que yo llamo un código desacoplado.
Si A hereda de B, A *es* un B.No tiene demasiado sentido desacoplar algo de sí mismo.

Por cierto, traits no son exactamente mixins.Los traits se especifican en tiempo de "compilacion".Un "mixin" puede crearse en tiempo de ejecución (véase javascript).