Je suis à la recherche d'un modèle de conception qui permet le comportement dynamique d'une fonction basée sur les implémentations des sujets abstraits auxquels elle applique le comportement.Designer Motif hybride d'État et de commandement?
Un exemple abstrait:
interface IPlace
{
}
class Garage implements IPlace
{
}
class Backyard implements IPlace
{
}
class Mover
{
void Move(IPlace source, IPlace destination);
}
Exemple d'utilisation:
void NotMain()
{
IPlace garage = new Garage();
IPlace backyard = new Backyard();
Mover mover = new Mover();
mover.move(garage, garage);
mover.move(garage, backyard);
mover.move(backyard, garage);
mover.move(backyard, backyard);
}
Résultat attendu:
Mover moved an item inside the garage
Mover moved an item from the garage to the backyard
Mover moved an item from the backyard to the garage because it's raining
Mover moved an item around in the backyard
Je pense que la réponse pourrait être le modèle de stratégie, mais je ne suis pas sûr de comment le comportement devrait être décidé car il y a n^2 comportements différents, où n est le nombre d'implémentations de l'interface IPlace. Peut-être une usine qui renvoie un objet MoveOperation?
Je suis intéressé par la meilleure solution pour ce type de problème.