POO: La délégation

vendredi 30 décembre 2011

Aujourd’hui j’ai appris la délégation et son utilité.

La délégation est un principe de programmation selon lequel un objet, au lieu d’accomplir une méthode qu’il définit, la délègue à un objet auxiliaire.
On pourrait dire qu’il lui refile le bébé, se contentant de passer les arguments et de retourner le résultat.
J’ai trouvé un intérêt pour ce principe, si on veut développer une application générique qui appellera des classes différentes en fonction de ces besoins.
Par exemple:

class DBTable
{
private $classname;

public function DBTable($class){
$this->classname = $class;
require_once $this->classname.'.php';
}

private function delegate_to_action($function, $args)
{
return call_user_func_array(array($this->classname, $function), $args);
}

public function display($conditions=null, $conditions_args=null)
{
$args = func_get_args();

return $this->delegate_to_action(__FUNCTION__, $args);
}
}
$test = new DBTable('DBMovie');
$test->display();

Dans cet exemple, je peux appeler une des fonctions que je créé dans DBTAble mais elle appellera celle défini dans DBMovie.
Cela permet de rendre son code réutilisable pour d’autres tables par exemple. DBTable sera donc ma table de délégation qui appellera les méthodes de la classe passé en paramètre lors de sa construction.

Tags: Développement