繁体   English   中英

如何在我的应用程序中使用一个对象实例

[英]how to use one instance of object throughout my application

我有一个部门类。我想在应用程序加载(控制台应用程序)时创建一个具有HR值的实例部门和一个具有Admin值的部门实例,然后我想在我的程序中使用这些实例。例如,我从csv文件中读取一个雇员,然后创建一个雇员对象。现在要创建一个雇员对象,我必须使用部门对象。我必须根据部门的值设置部门的适当值从文件读取。如何执行

您正在寻找单例模式的实例,可以通过将构造函数声明为私有并在getter中保持静态引用变量的初始化来实现。 就像是:

private static Department hr = null;

private Department() {
}

public static synchronized Department getHRInstance() {
    if (null == hr) {
        hr = new Department();
    }
    return hr;
}

从代码的其余部分,您可以调用Department.getHRDepartment() ,对于管理部门也是如此,该部门仅映射到第二个静态变量。 (对于两个以上的单例,您可能希望使用映射存储实例或使用Enum类定义单例。)

单例实例的缺点是依赖注入很难完成,这使得构建JUnit测试变得困难或不可能。 对于大多数使用的单例模式,实际上最好在初始化应用程序时初始化“单例”实例,并通过它们的构造函数将它们传递给类,或者通过创建对象工厂来创建对象,该对象工厂在创建其对象后传递单例引用,从而将它们传递给类实例。

不是直接回答您的问题,而是您的表述使我认为也许您想要的是一个enum 如果您的department是一个简单的价值观,没有复杂的状态或行为,那么它可能是枚举的一个很好的候选人。

看看枚举教程: http : //download.oracle.com/javase/tutorial/java/javaOO/enum.html

您需要一个单例。 有多种方法可以实现它,这是rsp发布的最广为人知的解决方案。 一个不错的技巧是让枚举只有一个值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM