2009-08-01 5 views
2

마이클 잭슨과 내가 같은 클래스 HumanBeing의 객체라고합니다. 그러나 그는 나보다 행동 '춤'을 더 잘 구현했습니다.다른 동작을 사용하여 같은 클래스의 객체를 구현하는 방법

동일한 클래스의 두 객체가 서로 다른 구현을 가질 수 있도록 프로그래밍 방식으로 어떻게해야합니까?

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

Martin Fowler가 Dealing with roles을 읽고 올바른 결정을 내려야합니다. 각 솔루션에는 장단점이 있습니다.

관련 문제