我试图找出一种方法将同一个类的一个实例传递给多个类,这样我就可以构建一个对象。问题是它不能是静态的或使用单例,因为许多用户将同时点击应用程序,我可能会遇到其他问题。是否有任何设计模式最适合这种情况,或者是否有某种方法在java中使用全局变量?我正在尝试使用现有的非常好的休息服务来实现这一点。
public class OneInstanceOf
{//I want to build this map object without static
private Map<String, String> mapIwantToBuild = new HaspMap<String, String>();
public void methodIwantToCall(String name, String value)
{mapIwantToBuild.put(name, value)
}
答案 0 :(得分:0)
您的常见模式是依赖注入。您可以使用spring框架执行该任务。
1.使用bean创建配置:
@Configuration
public class YourConfiguration {
@Bean
public OneInstanceOf oneInstanceOf {
return new OneInstanceOf();
}
}
2.根据需要注入你的bean(最简单 - 使用自动装配):
@Component
public class Client1 {
@Autowire
private OneInstanceOf oneInstanceOf;
public void someMethod() {
oneInstanceOf.methodIwantToCall();
}
}
Spring将确保oneInstanceOf的单个实例将被注入所有客户端。
答案 1 :(得分:-2)
U可以在要传递实例的每个类中创建一个带有实例类变量参数的setter。然后在其中一个类中创建一个方法,该类调用所有这些类的setter,并将参数实例作为参数传递给该方法。 如下所示。
class A{
B b = new B;
set(B b){
C.setB(b);
D.setB(b);
E.setB(b);
}
}