Je dois concevoir une application qui ressemble à un système de publipostage interne. Cependant, ceci est juste un projet de cours. Aucun réseau requis. Le professeur nous fait juste mettre les structures de données discutées au travail. Cependant, j'ai eu du mal à décider comment concevoir l'application. Laissez-moi vous expliquer brièvement ce que je dois faire et ensuite je partagerai mes pensées.Choix d'un motif de conception
Je pense que ce serait une bonne idée si vous savez qu'il s'agit d'une application basée sur une ligne de commande. Aucune interface graphique impliquée.
Le système de messagerie interne se compose de 5 états possibles différents. Général, Administrateur, Utilisateur, Modérateur et Composer. Il est possible d'être seulement à un état à la fois. Lorsque l'application démarre, elle passe à l'état Général par défaut. La seule commande possible dans cet état est de se connecter à un autre compte (Utilisateur, Admin, Mod.) L'Utilisateur dispose de commandes de base comme lire ses messages, en envoyer de nouveaux à un autre utilisateur, supprimer des messages, se déconnecter, et un couple de plus. Un utilisateur peut passer à l'un des deux états suivants: Composer ou Général. Pour accéder à l'état Composer, l'utilisateur doit utiliser la commande compose
. Dans cet état, vous composez un message à un autre utilisateur. Une fois que vous avez fini de composer le message, vous revenez à l'état Utilisateur. Le seul moyen pour un utilisateur de revenir à General est de se déconnecter.
Admin (qui hérite du comportement de l'utilisateur) et Mod sont à peu près les mêmes. Ils peuvent aussi changer d'état.
Voici un résumé de la façon dont il est possible de changer d'état
General |----->Admin
| |---->User(limited)
| |---->Compose
|
|----->Moderator
|
|----->User
| |---->Compose
Je suis un nouveau pour concevoir des modèles. J'ai beaucoup lu à leur sujet ces derniers temps. Cependant, ce sera la première fois que je les implémenterai. Si l'une de mes suggestions semble bizarre, faites-le moi savoir.
Le motif d'état semble être une excellente idée. Je me laisse changer un état d'objet dynamiquement. Cependant, tous les états n'ont pas les mêmes méthodes. Les administrateurs ont plus de méthodes que l'utilisateur. Le modérateur n'a aucune des méthodes de l'administrateur ou de l'utilisateur. Vous ne pouvez utiliser General que pour vous connecter. Je pense que cela limitera la possibilité d'utiliser State Pattern. Avez-vous des suggestions pour un autre modèle?
Une autre idée que j'avais était quelque chose comme ce qui suit. Puisque je peux monter et descendre des états, je pourrais être vu comme une pile. Par exemple: un utilisateur en mode composition.
\ /
| Compose | <---- top (current state)
| User |
| General |
-----------
Avez-vous des idées sur la façon dont je pourrais implémenter cela? Est-ce même possible? Bien que je sois le plus à l'aise avec Java, le code C++ ou pseudo est très bien.
J'aimerais beaucoup voir un exemple de code moderne qui implémente cela, idéalement en C#, si vous en connaissez! Avez-vous mis en œuvre cela avant? À votre santé – Berryl