我有一个部门类。我想创建一个具有值HR的实例部门和一个具有值Admin的部门实例,当我的应用程序加载(控制台应用程序)然后我想在整个程序中使用这些实例。如何我在不同的类中到处使用相同的实例?。例如,我从csv文件中读取一个员工,然后创建一个员工对象。现在要创建一个员工对象我必须使用部门对象。我必须设置适当的部门值,具体取决于从文件中读取的部门的价值。如何做到
答案 0 :(得分:2)
您正在寻找单例模式的实例,您可以通过声明构造函数private并在getter中初始化静态引用变量来实现。类似的东西:
private static Department hr = null;
private Department() {
}
public static synchronized Department getHRInstance() {
if (null == hr) {
hr = new Department();
}
return hr;
}
从其余代码中,您可以调用Department.getHRDepartment()
,同样也可以调用管理部门,后者只需映射到第二个静态变量。 (对于超过2个单身人士,您可能希望使用地图来存储实例或使用Enum
类来定义单身人士。)
单例实例的缺点是难以实现依赖注入,这使得构建JUnit测试变得困难或不可能。对于使用的大多数单例模式,实际上最好初始化“单例”实例,同时初始化应用程序并通过它们通过构造函数传递它们将它们传递给类,或者创建一个在创建对象后传递单例引用的对象工厂实例
答案 1 :(得分:1)
不直接回答你的问题,但你的表述让我觉得你想要的可能是enum
。如果department
是一个简单的值,没有复杂的状态或行为,它可能是枚举的一个很好的候选者。
查看枚举教程:http://download.oracle.com/javase/tutorial/java/javaOO/enum.html
答案 2 :(得分:1)
你需要一个单身人士。有几种方法可以实现它,这是rsp发布的最广为人知的解决方案。一个很好的技巧是只有一个值的枚举。