2009-08-01 4 views
2

Disons que Michael Jackson et moi sommes des objets de la même classe HumanBeing. Mais il avait une meilleure mise en œuvre du comportement 'dance' que moi.Comment implémenter des objets de même classe avec un comportement différent

Comment est-ce que je fais cela par programmation, de sorte que 2 objets de même classe puissent avoir une implémentation différente?

class HumanBeing 
{ 
public : 
    HumanBeing(){}; 
    void dance() { } 
}; 


HumanBeing Me , MJ; 

Me.dance(); ///bad dance 
MJ.dance(); //good dance 

Répondre

5

Vous décrivez un scénario dans lequel vous pourriez employer un Strategy Pattern, peut-être dans votre cas ayant de multiples implémentations d'une stratégie « de danse », qui peut être attaché à une personne lors de l'exécution.

HumanBeing Me(new BadDancer); 
HumanBeing MJ(new GoodDancer); 
+5

Je peux le voir maintenant 'Private Dancer tinaTurner;' – akf

+0

vous m'a fait gémir :) –

1

Vous devriez lire Dealing with roles par Martin Fowler et prendre la bonne décision. Chaque solution a des avantages et des inconvénients.

Questions connexes