Ver Mensaje Individual
  #14 (permalink)  
Antiguo 24/06/2010, 14:31
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Ayuda con herencia multiple

Pero no solventa en nada el problema de @negro1985, ya que como bien comentaron todos en el tema, solamente tiene que separar esa funcionalidad en otra clase e instanciarla dentro de su clase para utilizarla, no hay necesidad de usar el patrón decorator, ni nada, es simplemente instanciar la clase dentro y utilizarla.

Tu solución que expones no usa tampoco el patrón decorator, ya que si bien lees, la idea del patrón decorator es que el objeto decorado funcione con o sin el decorador, un ejemplo claro:
Código PHP:
Ver original
  1. <?php
  2. interface iCoffee
  3. {
  4.     public function getBaseCost();
  5. }
  6.  
  7. class Coffee implements iCoffee
  8. {
  9.     protected $_baseCost = 0;
  10.    
  11.     public function getBaseCost()
  12.     {
  13.         return $this->_baseCost;
  14.     }
  15. }
  16.  
  17. class BlackCoffee extends Coffee
  18. {
  19.     public function __construct()
  20.     {
  21.         $this->_baseCost = 5;
  22.     }
  23. }
  24.  
  25. abstract class CoffeeDecorator implements iCoffee
  26. {
  27.     protected $_coffee;
  28.    
  29.     public function __construct(iCoffee $Coffee)
  30.     {
  31.         $this->_coffee = $Coffee;
  32.     }
  33. }
  34.  
  35. class WithCream extends CoffeeDecorator
  36. {
  37.     public function getBaseCost()
  38.     {
  39.         return $this->_coffee->getBaseCost() + 1.5;
  40.     }
  41. }
  42.  
  43. class WithMilk extends CoffeeDecorator
  44. {
  45.     public function getBaseCost()
  46.     {
  47.         return $this->_coffee->getBaseCost() + 4;
  48.     }
  49. }
  50.  
  51. class WithChocolate extends CoffeeDecorator
  52. {
  53.     public function getBaseCost()
  54.     {
  55.         return $this->_coffee->getBaseCost() + 5;
  56.     }
  57. }
  58.  
  59. $coffee = new WithChocolate(new WithMilk(new WithCream(new BlackCoffee())));
  60. echo 'El precio del cafe es: $' . $coffee->getBaseCost();

Tu ejemplo no tiene nada de eso, por eso mi referencia a que leyeras y estudiaras realmente para que sirve cada patrón y cual es el problema en específico que requiere .

Saludos.

Última edición por GatorV; 24/06/2010 a las 16:14 Razón: ajustando ejemplo