Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/08/2012, 13:43
geek_omar007
 
Fecha de Ingreso: mayo-2012
Ubicación: La Paz
Mensajes: 23
Antigüedad: 12 años, 6 meses
Puntos: 0
Pregunta consulta patron decorator

hola comunidad, queria preguntarles porque no me queda claro algunas cosas con respecto a este patron, bueno leyendo y releyendo entendi mas o menos como funciona, vi un ejemplo en wikipedia lo hize correr y funciona perfectamente el codigo en cuestion es:

Código PHP:
<?php
interface iCoffee
{
        public function 
getBaseCost();
}
 
class 
Coffee implements iCoffee
{
        protected 
$_baseCost 0;
 
        public function 
getBaseCost()
        {
                return 
$this->_baseCost;
        }
}
 
class 
BlackCoffee extends Coffee
{
        public function 
__construct()
        {
                
$this->_baseCost 5;
        }
}
 
abstract class 
CoffeeDecorator implements iCoffee
{
        protected 
$_coffee;
 
        public function 
__construct(iCoffee $Coffee)
        {
                
$this->_coffee $Coffee;
        }
}
 
class 
WithCream extends CoffeeDecorator
{
        public function 
getBaseCost()
        {
                return 
$this->_coffee->getBaseCost() + 1.5;
        }
}
 
class 
WithMilk extends CoffeeDecorator
{
        public function 
getBaseCost()
        {
                return 
$this->_coffee->getBaseCost() + 4;
        }
}
 
class 
WithChocolate extends CoffeeDecorator
{
        public function 
getBaseCost()
        {
                return 
$this->_coffee->getBaseCost() + 5;
        }
}
$coffee = new WithChocolate(new WithMilk(new WithCream(new BlackCoffee())));
echo 
'El precio del cafe es: $' $coffee->getBaseCost();
creo q la mayorria q alguna vez haya leido de este patron vio este ejemplo, lo q no entiendo son en si la parte
Código PHP:
abstract class CoffeeDecorator implements iCoffee
{
        protected 
$_coffee;
 
        public function 
__construct(iCoffee $Coffee)
        {
                
$this->_coffee $Coffee;
        }

donde a esta funcion construct se le pasa una interfaz como parametro, yo francamente no lo entiendo, y disculpen mi ignorancia, no sabia q se podia hacer algo asi, y bueno no se como buscar en la red para entender esta parte
si alguien con mas experiencia me pudiera explicar esta parte o al menos si tiene algun link de algun tema o pagina donde lo expliquen se lo agradeceria mucho
gracias y saludos