我正在制作一个小的足球比赛,在打字稿,并希望允许用户控制一个球员在一次,但他们可以切换到控制另一个球员。我有一个player类,它包含属性和一个getNextMove方法,无论播放器是由用户控制还是由ai控制,都是必需的。但是,我希望getNextMove方法实现不同的逻辑,这取决于播放器是由用户控制还是由ai控制。
我想有一个用户类和一个AI类来实现Player类以及随后的getNextMove方法。
这和我想的一样
interface Player {
...
getNextMove()
}
class User implements Player{
getNextMove(){
// Take user input
}
}
class AI implements Player{
getNextMove(){
// Decide next move automatically
}
}然而,当用户改变玩家时,他们控制的玩家将需要切换回使用AI逻辑。我不认为类可以动态切换,我不能在这个对象结构之外思考,也不能找到能够实现我想要的东西的东西。任何建议都是非常感谢的。
发布于 2019-07-30 15:42:54
我同意JB Nizet。
使用策略模式。
class UserState {
// properties
}
class User {
constructor(){
this.state = new UserState();
}
activateUserControl(){
this.moveStrategy = new UserControlStrategy(this.state);
}
activateAI(){
this.moveStrategy = new AIControlStrategy(this.state);
}
getNextMove(){
this.moveStrategy.nextMove();
}
}https://stackoverflow.com/questions/57265026
复制相似问题