Comment pouvez-vous modéliser un objet pouvant avoir plusieurs états simultanés? Par exemple, vous pouvez avoir une personne en attente d'un bus, par exemple. C'est un état. Mais ils pourraient aussi lire un journal en attendant le bus. En outre, ils pourraient penser à quelque chose en lisant le journal. Ils pourraient également renifler leur nez parce qu'ils ont un rhume. C'est un quatre états qui se déroulent tous en même temps. Lorsque les concepts sont orthogonaux (indépendants), ils peuvent être simplement modélisés en tant que valeurs indépendantes, par exemple,Modélisation de plusieurs états simultanés
Répondre
Les états ne sont souvent que des étapes d'un processus. Au lieu de les représenter comme des valeurs, représentez le processus lui-même en tant que classe et décidez ce qui doit être fait, et pas seulement dans quel état.
Dans votre cas, plusieurs processus simultanés sont en cours. , donc votre classe Person aurait une instance de DailyCommuteProcess, BodyClockProcess, et ainsi de suite chacun s'occupant des fonctions correspondantes.
Cette approche (encapsulation de l'état et la logique qui agit sur un état dans une catégorie distincte, plutôt que de faire le look de classe consommatrice aux propriétés publiques et agir), est connu sous le nom Tell, Don't Ask principle.
class Person
{
Location location; // bus stop, home etc...
Motion motion; // sitting, walking, running
Topic thinkingAbout;
boolean sniffing;
boolean blinking;
boolean breakingWind;
}
Il est raisonnable qu'une personne puisse faire tout cela en même temps, donc il n'y a pas de contraintes. Autrement dit, ils peuvent être assis/marcher/courir à un endroit donné (arrêt de bus, domicile, travail), ils peuvent en même temps penser à un sujet, et peuvent aussi être sniffer, cligner des yeux et faire d'autres choses en même temps temps. Chaque sous-état lui-même est exclusif - une personne ne peut être qu'à un endroit, avoir une sorte de mouvement, penser à une chose.
Lorsqu'il y a des contraintes, le même modèle peut être utilisé, mais en conjonction avec un cadre de validation pour s'assurer que l'état est valide. Par exemple, si nous avons ajouté 'boolean sneezing'. Quand éternuer est vrai, alors le clignotement devrait être vrai aussi, puisqu'il n'est pas possible de garder les yeux ouverts en éternuant. Le modèle de validation coderait cette contrainte.
En pensant en termes d'états, les valeurs indépendantes peuvent être modélisées collectivement comme un seul état en prenant le produit cartésien de chaque sous-état.
Utilisez un tableau pour stocker tous les états de l'objet est actuellement.
MrBean.states = {
"WaitingForBus",
"ReadingNewspaper",
"Sniffling",
"ThinkingAboutPaintings"
};
Comment modéliser les états est entièrement jusqu'à vous. Ce qui précède est un exemple simple où les états sont modélisés par des chaînes, et portent zéro information supplémentaire.
- 1. Modélisation FSM (machine à états finis) des états d'une page Web à l'aide de jQuery
- 2. MYSQL - plusieurs états de compte
- 3. Entity Framework plusieurs types hérités simultanés
- 4. Question d'auteur de plusieurs états Flex/AS3
- 5. Tampon de page énorme par rapport à plusieurs processus simultanés
- 6. Gestion d'une activité avec plusieurs états
- 7. Comment stocker plusieurs états dans une variable?
- 8. état flexible basé sur plusieurs états
- 9. Comment modéliser un entitly avec plusieurs états?
- 10. Appels simultanés de CDR
- 11. Publication d'objets simultanés
- 12. Plusieurs états de la barre de progression dans WPF
- 13. Plusieurs appels WCF simultanés d'un client unique au service
- 14. Callbacks asynchrones simultanés
- 15. modélisation générale de base de données et modélisation spécifique django
- 16. Outils de modélisation de systèmes concurrents
- 17. Modélisation d'objets avec plusieurs relations de tables dans Zend Framework
- 18. Modélisation de la journalisation temporelle sur plusieurs nœuds
- 19. Modélisation de plusieurs niveaux d'héritage en utilisant des unions discriminées
- 20. TreeView. États et villes des États-Unis
- 21. Listes avec allocateurs simultanés
- 22. AVCaptureVideoDataOutput et AVCaptureMovieFileOutput simultanés
- 23. ASP.NET Ajax PageMethods simultanés
- 24. Modifier simultanément plusieurs états dans Flash Builder 4
- 25. Gestion du même événement dans plusieurs états dans Workflow Foundation
- 26. Modélisation d'une relation plusieurs-à-plusieurs dans Graal au-dessus d'une base de données existante
- 27. Modélisation Python/Django Question
- 28. Apprentissage de la modélisation
- 29. Modélisation de domaine Question
- 30. Modélisation de l'héritage Hibernate