将类实例传递给其他类的适当方法(Java)

时间:2014-04-25 04:32:27

标签: java instance

我有一个主类,它有许多与实例相关的方法,这些方法在其他类中经常需要,我经常发现自己在构造函数中传递了主类的实例。我经常发现这有几层深层的类具有主类的实例,这些实例已经从实例复制到实例,我无法想象这对于内存使用是好的。

有没有办法在不必在构造函数或方法中传递实例或者至少减少主类实例使用的内存的方法。

为了说清楚我不是在寻找静态方法,它的设计是能够拥有多个主类的实例。

示例代码:

public class Main {
    public Main() {
        Class2 class2 = new Class2(this);
    }

    public void someMethod() {
        //Do something
    }
}

public class Class2 {
    private final Main instance;

    public Class2(Main instance) {
        this.instance = instance;
        Class3 class3 = new Class3(instance);
    }
}

public class Class3 {
    private final Main instance;

    public Class3(Main instance) {
        this.instance = instance;
        instance.someMethod();
    }
}

3 个答案:

答案 0 :(得分:1)

您可以使用依赖注入设计模式。

Dependency-Injection-Design-Pattern

  

Spring,Google Guice和Java EE CDI框架促进了这一目标   通过使用Java Reflection API和依赖注入的过程   java注释。我们所需要的只是注释字段,构造函数或   setter方法并在配置xml文件或配置它们   类。

答案 1 :(得分:1)

您还可以使用依赖项注入将依赖属性或对象传递给所需的类。 一个这样的流行框架是Google Guice.

答案 2 :(得分:-2)

您可以在Main类中创建类似someMethod()的方法,或者如果不可能,请将Main类本身设为单例。

前一种方法的例子:

public class Main {
    public Main() {
        Class2 class2 = new Class2(this);
    }

    public static void someMethod() {
        //Do something
    }
}

现在您不必再传递Main的实例,因为其他类可以直接调用Main.someMethod()