gpt4 book ai didi

java - 单例比静态好?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:24:29 25 4
gpt4 key购买 nike

所以我的游戏中有一个玩家类。从逻辑上讲,只需要一个玩家对象(单人玩家),但是很多不同的类都需要访问玩家对象。 (即, map 需要知道玩家是谁,相机和敌人需要与玩家互动,等等)。

我有几个选择。

或者我可以将这个播放器对象传递给所有需要它的东西,这很麻烦。 (依赖注入(inject)我觉得就叫)

只需将其设为 public static。

让它成为单例。

各自的优缺点是什么?

最佳答案

我不会在这里使用单例或静态变量,而是会通过 setter 将 Player 实例交给需要它的类。如果您只需要一个播放器实例 - 只需调用一次 new Player() :-)

查看我对单例的看法 here .简短摘要:他们典型的误用(避免“繁琐”的 setter )违反了 OO 并降低了设计质量。

静态变量和单例一样,连同Monostate (非静态 setter/getter ,静态数据,构造函数是“工厂”)。避开他们。考虑一下如果您将所有内容都设为静态:玩家、 map 、相机、敌人等。您将避免很多“繁琐”的 setter 。但它是面向对象的吗?当你完成你的游戏时,你能否在另一个游戏中重用你的寻路算法、AI 算法等,或者它们是否有太多特定于你当前游戏的全局变量(Singletons 等)永久地嵌入其中?

关于java - 单例比静态好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7884452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com