이전 질문에서 아래 코드가 전략 패턴의 예라고 가르쳐 왔습니다. 특히 라인 _player.Draw(spriteBatch, _context);
.이 전략 패턴을 올바르게 이해하고 있습니까?
나는 이전의 추가 메소드 호출과는 달리 그 라인과 그 라인 사이의 차이점을 보지 못했다.
내가 왜 _drawHugeContext
에 대한 두 번째 호출을 사용하지 않고 누가 Player
클래스의 Draw()
을 삭제했는지 설명 할 수 있습니까? 이 예가 너무 간단하고 전자가 훨씬 더 나은 상황이 있습니까?
public class Arena
{
Player _player;
IPlayerContext _drawHugeContext;
public void Draw(SpriteBatch spriteBatch)
{
_player.Draw(spriteBatch, _drawHugeContext);
_drawHugeContext.Draw(spriteBatch, _player);
}
}
public class Player
{
public int Percentage { get; private set; }
[...] //A few more fields
public void Draw(SpriteBatch spriteBatch, IPlayerContext context)
{
context.Draw(spriteBatch, this);
}
}
public class IPlayerContext
{
public void Draw(SpriteBatch spriteBatch, Player player)
{
spriteBatch.Draw(player.Percentage);
[...] //A few more fields drawn from player
}
}