小编Cas*_*sey的帖子

什么时候可以使用instanceof?

我正在设计一款游戏.在游戏中,各种游戏对象根据他们需要做的事情扩展不同的接口(和一个抽象类),并传递给处理程序,处理程序按照定义的时间间隔处理具有特定接口的项目(它们实际上将所有工作分散开来以一种简洁的方式确保始终处理输入/视频/等).

无论如何,其中一些对象扩展了抽象类Collider并传递给CollisionHandler.Collider类和处理程序负责碰撞中涉及的所有技术,并且只要求对象实现collidesWith(Collider c)函数,并根据它碰撞的内容进行修改.

许多不同类的对象将彼此碰撞,并且将根据它们碰撞的对象的类型及其特定属性而以非常不同的方式起作用.

完美的解决方案似乎是像这样使用instanceof:

class SomeNPC extends Collider{
    collidesWith(Collider c){
        if(c instanceof enemy){
            Fight it or run away depending on your attributes and theirs.
        }
        else if(c instanceof food){
            Eat it, but only if it's yellow.
        }
        else if(c instanceof BeamOfLight){
            Try to move towards its source.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这实际上似乎是一个合法的地方.我只是感觉不舒服.就像一个goto在某些特定情况下有意义一样.设计是否对任何人都有根本感觉?如果是这样,你会建议做什么来实现相同的行为.

java polymorphism instanceof flawed-concept

28
推荐指数
3
解决办法
2422
查看次数

如何让 Docker for Windows 生成明文身份验证密钥以访问 Docker Hub 上的私有映像?

Amazon Elastic Beanstalk 需要来自 Docker 的明文密钥才能访问 Docker Hub 上的私有映像。根据 AEB 上的说明,您只需运行docker login以在“%UserProfile%/.docker/config.json”中生成这些凭据。但是,这会生成以下文件:

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "HttpHeaders": {
        "User-Agent": "Docker-Client/17.12.0-ce (windows)"
    },
    "credsStore": "wincred"
}
Run Code Online (Sandbox Code Playgroud)

凭据存储在 Windows 凭据管理器“wincred”中。

我如何改为强制在 config.json 文件中临时生成凭据?

docker docker-for-windows

5
推荐指数
1
解决办法
1261
查看次数

将个人库存储为控制台应用程序是一个坏主意吗?

我已经开始将我的默认库类型设置为控制台应用程序.直接的好处是我可以轻松地在主应用程序中实现集成测试.

是不是没有我的库作为标准DLL?到目前为止,一切似乎都很好.

我将始终可以访问这些库的源代码,并且我将始终将它们作为项目引用,而不是作为二进制文件,如果这会产生影响.

编辑:

我主要感兴趣的是DLL与EXE的功能是否存在差异.我并不十分担心会发送几千字节的额外数据.

附加编辑:

在功能方面,事实证明Razor无法引用另一个未设置为库的项目,因此组织之外至少有一个原因是不能这样做.

.net dll

0
推荐指数
1
解决办法
85
查看次数