ok muchas gracias por la data voy a investigar un poco mas sobre lo de factory, yo lo estaba implementando asi:
   
Código PHP:
Ver originalabstract class Controller{
    
    //protected $Smarty;
    protected $Email;
    protected $Paginador;
    protected $Session;
    protected $Utilidades;
    protected $Imagen;
    protected $Upload;
    protected $Captcha;
    protected $BreadCrumb;
    protected $Vistas;
    protected $Mensajes;
    
 
    /**
     * Constructor
     * 
     * @access public
     * @version 0.1
     *
     */
    public function __construct()
    {   
        
        
        //creo una instancia de la configuración               
        $config = Config::singleton();
        
        //creo la instancia para las sesiones.
        $this->Session  = new Session();
        $this->Session->Session();
                
        //creo las instancias para el email
        $this->Email = new PHPMailer();
        $this->Email->IsSMTP();
        $this->Email->SMTPAuth   = true;                  // enable SMTP authentication
        $this->Email->Host       = $config->get('host');
        $this->Email->Username   = $config->get('usuario');
        $this->Email->Password   = $config->get('pass');
        $this->Email->Port       = $config->get('puerto');
 
        $this->Email->From       = $config->get('email');
        $this->Email->FromName   = $config->get('nombre');
                    
        //creo las instancias para las utilidades varias
        $this->Utilidades   = new Utilidades();                
        
        //creo la instancia para el captcha
        $this->Captcha = new Captcha();
        
        
        //creo la instancia para las imagenes
        $this->Imagen   = new SimpleImage();
        
        //creo la instancia para el upload
        $this->Upload   = new file_upload();
        
        //creo la instancia para el breadcrumb
        $this->BreadCrumb   = new breadCrumbs();
        
        //creo la instancia de la vista
        $this->Vistas   = new Vistas();
        
        //creo la instancia de los mensajes
        $this->Mensajes = new Mensajes();
              
        //Incluimos los modelos        
        $this->Utilidades->recursiveInclude($config->get('modelsFolder'));
        
        
        
        
 
    }
    
    
}
  
estaría correcto si el recursive lo pongo fuera del constructor como un metodo de la clase controller? 
salu2