Ver Mensaje Individual
  #13 (permalink)  
Antiguo 24/06/2010, 12:53
atrianaster
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con herencia multiple

Cita:
Iniciado por GatorV Ver Mensaje
@atrianaster

No, perdon pero te pido investigues para que es y como sirve el patrón decorator, fue creado para solventar algo simple: Agregar funcionalidad a una clase de forma dinamica.
Correcto. Utilizando este patrón podemos añadir características o funcionalidades de objetos existentes sin necesidad de utilizar la herencia.

Cita:
Iniciado por GatorV Ver Mensaje
No es solventar ni hacer herencia múltiple ni nada,
Nunca dije "que era" para solventar la herencia múltiple.

Cita:
Iniciado por GatorV Ver Mensaje
aparte de que el problema en el caso de negro1985 es que no debe de heredar por heredar, es un problema a nivel conceptual de cuando y como debe de heredar una clase, si lo confundes diciendo que usando el patrón Decorator puede solventar y hacer lo que quiere hacer, le estas mostrando un concepto erroneo de como diseñar su clase.
Si @negro1985 no debe heredar por heredar por un problema conceptual, que uno de ellos puede ser la inexistencia de la relación de parentesco entre la clase padre y la clase hija. Entonces puede hacer uso del Patrón Decorator ya que se recomienda su aplicabilidad cuando, la extensión mediante la herencia no es viable o cuando hay una necesidad de extender la funcionalidad de una clase, pero no hay razones para extenderlo a través de la herencia.

Cita:
Iniciado por GatorV Ver Mensaje
Aparte que por lo que te comentaba, el patron decorador tiene otro uso que es el de agregarle funcionalidad a la clase, no heredar de muchas clases.
Que si utilizamos esta característica inteligentemente con el uso de Interfaces podemos lograr algo similar.

En el código de ejemplo siguiente se evidencia claramente como un Ambidiestro puede escribir con ambas manos y es utilizando este patrón. Ambidiestro hereda de Diestro e implementa la interfaz IZurdo.


Código PHP:
Ver original
  1. interface IZurdo
  2. {
  3.     public function escribeConLaIzquierda();
  4. }
  5.  
  6. interface IDiestro
  7. {
  8.     public function escribeConLaDerecha();
  9. }
  10.  
  11. class Diestro implements IDiestro
  12. {
  13.   public function escribeConLaDerecha()
  14.   {
  15.       return 'Soy un Diestro';
  16.   }
  17. }
  18.  
  19. class Zurdo implements IZurdo
  20. {
  21.    public function escribeConLaIzquierda()
  22.    {
  23.        return 'Soy un Zurdo';
  24.    }
  25. }
  26.  
  27. class AmbiDiestro extends Diestro implements IZurdo
  28. {
  29.    public function escribeConLaIzquierda()
  30.    {
  31.       $zurdo = new Zurdo();
  32.       return $zurdo->escribeConLaIzquierda();
  33.    }
  34. }
  35.  
  36. $ambidiestro = new AmbiDiestro();
  37. echo $ambidiestro->escribeConLaDerecha();
  38. echo $ambidiestro->escribeConLaIzquierda();


Saludos decorados

Última edición por atrianaster; 24/06/2010 a las 13:34