Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/02/2007, 07:51
Avatar de Felippe
Felippe
 
Fecha de Ingreso: octubre-2006
Mensajes: 54
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Decorator Pattern in PHP5

Ups ! , pasé por alto la independencia entre el Decorador y el Decorado, tienes razón.

Tal vez lo apropiado sea que las clases formatters, reciban como parámetro el objeto String_Writer, entonces la clase String_Formatter quedaría así:

Código:
abstract class String_Formatter{
 
    public abstract function format(String_Writer obj);
}
Y cada formatter, luego de hacer su trabajo como corresponda:
Código:
class String_Formatter_Uppercase extends String_Formatter {
 
	public function __construct() {
    }
	
    public function format(String_Writer $obj) {
		$obj->setString( strtoupper($obj->getString()) );
    }
}
De esa manera la pagina de prueba quedaría reducida a esto:
Código:
$string = 'php rof snrettap';
$path = 'prueba.txt';

/** Mantenemos el codigo original del sistema anterior */
$stringWriter = new String_Writer($path);
$stringWriter->setString($string);

/** Y le aplicamos el formato */
$stringUppercase = new String_Formatter_Uppercase();
$stringUppercase->format($stringWriter);

/** El objeto $stringWriter puede continuar con su vida..... */
$stringWriter->store();
print $stringWriter->getString();
Es que aún no me convence la estructura del ejemplo original (a excepción del interface que es lo que le agregaría a mi variante)