在OOP中访问包装器对象的变量

时间:2018-03-19 18:46:41

标签: java vba application-design

我正在为我的雇主在VBA中创建一个应用程序(以及出于业余目的而在Java中使用类似的应用程序),其目的是“包含”'不同的工具,将有助于我们的日常工作。它将成为主应用程序窗口的某种平台,用户可以从那里访问某些应用程序组件,例如当用户可以向我提供有关应用程序功能的反馈时的子程序,然后信息将存储在我以后可以访问的数据库中。

我已经有了一个结构:一个Application类,它包含Application Manager,这个类包含SubApp类型的字段数组。 SubApp类型包含子应用程序的视图,逻辑和业务。 Application类还包含成员,例如应用程序名称和当前使用该应用程序的用户信息(以前从应用程序数据库访问)。

每当子应用程序启动时,我想在标题栏上添加应用程序的名称以及子应用程序的名称,例如application_name - sub_app_name。问题是,我不知道如何以正确的方式访问它'。最近我通过将app变量创建为全局对象来实现这一点,然后使用一些getter访问它是没有问题的。但我觉得将应用程序变量存储为全局变量是一种不好的做法。

存储有关当前用户的信息的成员变量也会出现同样的问题。我希望在他提供反馈时存储有关当前用户的信息(提供反馈的工具是我应用程序中的子应用程序)

所以这是我的问题:如何从一个成员方法/变量中访问包装对象的方法/变量?

欢迎任何关于申请总体设计的建议。

1 个答案:

答案 0 :(得分:0)

面向对象设计: 使用所有字段的getter和setter是正确的做法。如果您想要变得懒惰,请将所有字段公开,并且可以从对象访问它们而不需要getter或setter。

如果您希望在类中的多个方法中访问变量。

A)你可以创建一个变量全局

B)创建一个局部变量,并将其作为参数传递,直到您不再需要使用它为止。

public class Main { //All implementations stated above

    private Object globalObject;

    public static void main(String[] args) {
        Object localObject;
        method1(localObject);

        method2ThatUsesGlobalObject();
    }
}

在类之间访问变量:

A)变量静态

B)通过方法参数或构造函数参数

传递它

C)使用抽象类或接口

以下是我所说的代码用法示例

public abstract class JavaAbstractClass {
    public abstract Object giveMeThisObjectWhenINeedItThanks();
}

public interface JavaInterface { 
    Object giveMeThisObjectWhenINeedItThanks();
}

public class Main { //All implementations stated above

    public static Object object; //Accessible by Main.object everywhere

    public static void main(String[] args) {
        Object local;

        ClassOne class = new ClassOne();
        class.method1(local);

        new ClassWithInterface() {
            @Override
            public Object giveMeThisObjectWhenINeedItThanks() {
                    return local;
            }
        };

       new JavaAbstractClass() {
            @Override
            public Object giveMeThisObjectWhenINeedItThanks() {
                    return local;
            }
        };
    }
}