【发布时间】:2016-09-18 16:18:39
【问题描述】:
我正在进行一个大规模的重构项目,代码有一个 5000 行的主类,它被注入到所有内容中,存储了所有内容并拥有所有公共代码。
我不是分析和设计方面的专家,但我已尽我所能将事物分离出来,我大约 80% 通过重构依赖于主类的类来使用我拥有的新类创建的。
有一些类型的数据在应用程序启动时被初始化,并且在应用程序的整个生命周期中几乎所有东西都可以访问它们。例如,有一个包含数百个参数的 Config 类。
我采用的方法是创建几个单例,其中最重要的两个是 GUIData 和 ClientData。 GUIData 包含对应用程序主机的引用,clientdata 维护对配置和其他类似类的引用。
这允许我从代码中的任何位置调用 ClientData.getInstance().getConfig().getParam("param") 但我不认为这是最好的方法。
我考虑了单独的静态类,而不是这些包含类实例但某些类确实需要构造函数的数据单例。
我已经在谷歌上搜索了一个星期,试图找到更好的方法来做到这一点,但不知何故,我总是在讨论数据库缓存的线程上结束
【问题讨论】:
-
用
java.util.Properties怎么样? -
数据存储在属性中并在启动时读取,问题是有几个线程和大量的东西要解析,还有许多方便的方法和通过 clientdata 访问的大约 10 个不同的类。如果您认为它仍然是一个很好的用例,请举例回答,我会尝试一下
-
这听起来有点像您想使用一个注入框架,创建 bean(也许将它们分离成您需要的),然后简单地将这些 bean 注入您的应用程序类。有了这个,你甚至可以直接注入属性,所以你可以这样做而不是 ClientData.getInstance().getConfig().getParam("param"): @Inject @Named("param") String param;并且您将在该字段中获得可用的数据。
-
老实说,这个问题有点笼统,每个人都只是建议自己喜欢的依赖注入框架,这是非常现实的风险。我建议阅读 Spring Framework 和 Java EE(两者都是有效选项)。在不了解您的项目架构和具体目标的情况下,我担心您不会得到比这更好的答案。
标签: java shared-data