Bonjour,


J'ai une question de conception à vous poser. Je vais vous le poser sous forme de problème, pour ne pas être influencer par la technologie utiliser.

Soit un bâtiment qui produit X unité de ressource toutes les heures.

Pour mettre à jour le nombre d'unité disponible, on prend le delta entre la dernière mise à jours et la mise à jours actuelle. Pour avoir quelque chose dans ce style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Ressource_Dispo = Ressource_Dispo + (Production_Bâtiment * Delta / 3600)
(Si Delta en seconde)

Le problème vient maintenant :
Si posons qu'on programme un Event entre la dernière mise à jour et notre mise à jours qui change la production du bâtiment.
On connait sa date et les changements que cette Event va produire. Mais nous ne pouvons pas réaliser la modification au moment théorie où va se produire cette Event. Mais seulement lors de notre mise à jours.

La question que je me pose est :
  • Comment prendre en compte les évènements programmées quand on ne peux pas les réaliser à la date prévue ?
  • Quel Pattern est adapté à la résolution de ce problème ?


J'ai pensé à la solution suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
1. Mise à jours des ressources
1.A Recherche des Event à réaliser
Pour tout les Event E
1.A.1 Mise à jours des ressources entre la dernière mise à jour et l'Event E
1.A.2  Réalisation de l'Event E
1.B Mise à jours des ressources entre dernière mise à jour et maintenant.
Cela me fait penser au pattern "Command pattern"

Mais je ne suis pas sûr...

Si vous avez des pistes sur cela ! Je prends aussi tout les commentaires !

Cordialement,
Patrick Kolodziejczyk.