2009-08-01 18 views
2

マイケルジャクソンと私は同じクラスのHumanBeingのオブジェクトであると言います。しかし、彼は私よりも "ダンス"の行動をよりよく実装しました。異なる動作を持つ同じクラスのオブジェクトを実装する方法

これをプログラムで行い、同じクラスの2つのオブジェクトが異なる実装を持つようにするにはどうすればよいですか?

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


HumanBeing Me , MJ; 

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

答えて

5

あなたは、実行時に人に取り付けることができる「ダンス」戦略の複数の実装を持つ、おそらくあなたのケースでは、Strategy Patternを採用する可能性があるシナリオを記述しています。

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

私は今それを見ることができます 'プライベートダンサーtinaTurner;' – akf

+0

あなたは私を唸らせました:) –

1

Dealing with rolesは、Martin Fowlerが読んで正しい判断を下す必要があります。それぞれのソリューションには長所と短所があります。

関連する問題