je suis pas forcément au point pour répondre mais voici mon idée après réflexion aujourd'hui
Code PHP :
<?php
class troop
{
actions = array();
function setAction($action, $strategy)
{
$this->actions[$action] = new $strategy;
}
function launchAction($action, $params)
{
if (isset($this->actions[$action]))
return $this->actions[$action]->launch($params);
else
throw new Exception($action.' n est pas disponible !!!');
}
}
chacune de tes classes unités héritent de la class troop et tu génères (fichier de référence, directement dans la classe, en bdd, etc... ) la liste action / strategy à "setter" via setAction
après tu fonctionnes sur le pattern strategy (genre pour l'action "charger" il y a diverses stratégies : la stratégie pour les unités lourdes, pour les unités montées, etc...)
chacune de tes stratégies possède la méthode launch($params)
conclusion pour connaitre la liste des actions disponibles pour une unité :
Code PHP :
<?php
foreach ($this->actions as $act => $idAct)
{
echo 'je peux '.$idAct.'<br/>';
}