首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中,有没有一种按需初始化对象的方法?

在Java中,有没有一种按需初始化对象的方法?
EN

Stack Overflow用户
提问于 2012-06-20 05:02:50
回答 3查看 120关注 0票数 1

考虑一个包含一千多个属性的理论工厂类(例如,MVC项目中的模型)。

工厂模式用于显示选定级别的函数中的场景快照(在类似游戏的项目中)。工厂必须将所需的组件和模型传递给场景。

模型和组件可以被任何场景重用,但每个场景只能初始化一次(两个场景不可能进行交易)。

所以,我的问题是:

考虑到我不需要每个组件,我不需要初始化数千个属性(因为它太慢了),我如何实例化组件以传递给场景,只有当我需要它的时候?

我不想为每个工厂创建一千个工厂(抽象工厂模式),也不想在工厂本身初始化对象,因为对象可以重用,我想避免复制/粘贴。

在Java中,有没有一种按需初始化对象的方法?

我不想收到这样的回答:“如果你有一千个属性,这是一个糟糕的概念”,我知道这一切,但我需要处理一个旧系统,我想减少内存使用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-20 05:08:39

没有内置的,没有。

我已经使用AOP做了一些延迟初始化的技巧,例如,一旦属性第一次被引用,就运行初始化。根据需要,这只适用于长时间运行的初始化,适用于对象的所有属性、任意子集等。

这不需要用AOP来完成,它可以通过普通的Java代码来完成-但是如果Java代码已经写好了,是来自你控制之外的生成器,等等,这可能会有问题。

票数 1
EN

Stack Overflow用户

发布于 2012-06-20 05:08:34

您可能想要研究一下lazy initialization

票数 1
EN

Stack Overflow用户

发布于 2012-06-20 05:09:18

一种选择是通过builder pattern公开您的工厂

然后,您可以拥有多个ScenarioBuilders,每个都“知道”如何为给定的场景初始化底层工厂。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11109392

复制
相关文章

相似问题

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