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