我对设计模式方法不陌生。我正在设计一个名为Xonix的游戏。所有可移动对象具有完全相同的编码。我想知道何时适合使用以上代码中的策略模式:
移动是虚拟的。
void User::move(const dynamicO& mo, const staticO& so)
{
float x = 0, y = 0;
keyboard(x, y);
m_sprite.setPosition(x, y);
}
void User::keyboard(float& x, float& y)
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { x = -18; y = 0; };
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { x = 18; y = 0; };
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) { x = 0; y = -18; };
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) { x = 0; y = 18; };
}
一个对象与另一个对象之间唯一的不同是键盘,在这种情况下,键盘仅用于用户,此外,我省略了一些与问题不太相关的额外代码,这更像是一个普遍的问题。
所以我的问题是,应该只在键盘算法上使用策略模式,还是应该在 move 上使用策略模式来保存所有对象中的代码行并将它们集中在一个文件中?