首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果不能动态地更改对象的类,该怎么办?

如果不能动态地更改对象的类,该怎么办?
EN

Stack Overflow用户
提问于 2019-07-30 05:47:01
回答 1查看 75关注 0票数 2

我正在制作一个小的足球比赛,在打字稿,并希望允许用户控制一个球员在一次,但他们可以切换到控制另一个球员。我有一个player类,它包含属性和一个getNextMove方法,无论播放器是由用户控制还是由ai控制,都是必需的。但是,我希望getNextMove方法实现不同的逻辑,这取决于播放器是由用户控制还是由ai控制。

我想有一个用户类和一个AI类来实现Player类以及随后的getNextMove方法。

这和我想的一样

代码语言:javascript
复制
interface Player {
    ...
    getNextMove()
}

class User implements Player{
    getNextMove(){
        // Take user input
    }
}

class AI implements Player{
    getNextMove(){
        // Decide next move automatically
    }
}

然而,当用户改变玩家时,他们控制的玩家将需要切换回使用AI逻辑。我不认为类可以动态切换,我不能在这个对象结构之外思考,也不能找到能够实现我想要的东西的东西。任何建议都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-30 15:42:54

我同意JB Nizet。

使用策略模式。

代码语言:javascript
复制
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();
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57265026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档