将对象的一个​​实例传递给不同的类而不使用静态或单例

时间:2017-06-16 13:18:19

标签: java object design-patterns

我试图找出一种方法将同一个类的一个实例传递给多个类,这样我就可以构建一个对象。问题是它不能是静态的或使用单例,因为许多用户将同时点击应用程序,我可能会遇到其他问题。是否有任何设计模式最适合这种情况,或者是否有某种方法在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)  
    }

2 个答案:

答案 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);
    }
}