Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1259 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Pattern State - Implémentation et extensibilité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Pattern State - Implémentation et extensibilité

n°1593230
charly007
Posté le 30-07-2007 à 11:48:53  profilanswer
 

Bonjour,
 
Ce post traite de l'implémentation du pattern State et de son extensibilité.
 
Dans de très nombreux articles, la classe State est une interface. Dans de plus rares, elle est une classe abstraite.
 
Dans le premier cas (interface State), toutes les classes concrètes représentant un état implémentent l'interface State. Elles doivent donc impémenter toutes les méthodes de cette interface.
A cela je vois deux inconvénients :
 1. Tous les états ne réagissent pas obligatoirement à tous les événements. Un état qui ne réagit pas à un événement l'ignore.
 2. Si l'on souhaite faire évoluer la machine par l'ajout d'un nouvel événement, il faudra l'ajouter à l'interface State et donc modifier toutes les classes concrètes (qui, voir point 1., ne réagissent pas obligatoirement à ce nouvel événement).
 
Dans le deuxième cas (classe abstraite State), on pourrait envisager l'implémentation suivante :
 - Chaque événement est défini dans la classe abstraite State par une méthode, non abstraite, mais qui ne réalise rien (corps vide).
 - Chaque état (classe concrète) surcharge les méthodes correspondant aux événements auxquels elle réagit.
 
Ainsi :
 1. Dans le cas où un événement est reçu par un état qui n'est pas censé y réagir, le code de la classe abstraite State sera exécuté, ne réalisant rien (ce qui est le comportement souhaité).
 2. Dans le cas où un événement est reçu par un état qui est censé y réagir, le code de la classe concrète sera exécuté.
 3. Si l'on souhaite faire évoluer la machine par l'ajout d'un nouvel événement, il suffira d'ajouter une méthode vide à la classe abstraite et de surcharger cette méthode uniquement dans les états réagissant à cet événement. Il ne sera pas nécessaire de modifier toutes les classes concrètes.
 
 
Qu'en pensez-vous ?
Merci.


Message édité par charly007 le 30-07-2007 à 11:53:26
mood
Publicité
Posté le 30-07-2007 à 11:48:53  profilanswer
 

n°1728843
pinpoy
Posté le 05-05-2008 à 23:12:15  profilanswer
 

effectivement la classe abstraite semble  présenter des avantages non négligeables sur l'interface
 
 
dsl de déterrer ce topic mais bon  :D

n°1729950
charly007
Posté le 08-05-2008 à 15:34:51  profilanswer
 

pinpoy a écrit :


dsl de déterrer ce topic mais bon  :D


J'ai l'impression qu'il n'attire pas foule   :sweat:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Pattern State - Implémentation et extensibilité

 

Sujets relatifs
Implémentation des méthodes dans un fichier séparé, possible?Pattern Visiteur et Decorateur
[PHP] preg_replace - Question sur la capture d'un pattern - EfficacitéJLabel dans un pattern MVC
Implémentation d'un programme de logique mathématique en CMini débat, quelle implementation JAVA de serveur ftp preferez vous ?
implémentation de CBCAST et ABCAST[resolu] Conflit Virtuel Static ( Factory Design Pattern )
[Ada] Mon implémentation du Jeu du Taquin ::=la file de priorités 
Plus de sujets relatifs à : Pattern State - Implémentation et extensibilité


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR