[英]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.