【问题标题】:Is there a SOLID way to use the heap in java?有没有一种在java中使用堆的可靠方法?
【发布时间】:2020-04-02 19:13:18
【问题描述】:

所以我读到静态变量和方法破坏了open close principle

假设您有一个类,该类有一个带有“大量数据”(10mb)的变量,该变量是最终的并在所有实例之间共享。游戏中敌人的精灵图,比如说僵尸。

如果我不使用SOLID,我会将变量设为私有静态,因此它只存储在内存中一次。有 100 个僵尸使用 10mb 的内存在存储在堆上的精灵图上,如果每个实例有 1 个,那么它的内存远少于 1gb。

问题 - 有没有一种可靠的方法来使用堆来存储精灵图的一份副本,这样它就不会占用太多内存?

【问题讨论】:

  • 向一个工厂对象请求实例。
  • 我太笨了!当然这是答案,然后有一个精灵地图加载器,所以工厂仍然有一个单一的目的,请你把它作为一个实际的答案,以便我可以将它设置为已解决!

标签: java oop shared-memory solid-principles


【解决方案1】:

您的问题是您无法了解在您的类中内置的所有实例之间共享的精灵图。

然后你需要把它移到别处。在另一个知道应该始终返回相同引用的类中有一个 sprite map 工厂方法。 (单身)

随着您获得更多经验,您会发现很多编码都是关于推迟决定在给定位置实际应该使用什么值,通常是因为您直到运行时才知道。这通常会导致代码非常粗糙,以便将内部移动部件与决定做什么的外部世界联系起来。

根据我的经验,到目前为止,最简洁的方法是将其从您自己的代码中移出并使用依赖注入框架。 Java有几个;我发现 Dagger 2 关于在编译时确定配置的方法非常令人耳目一新。

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 2011-09-11
    • 2019-11-04
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多