我正在为我的雇主在VBA中创建一个应用程序(以及出于业余目的而在Java中使用类似的应用程序),其目的是“包含”'不同的工具,将有助于我们的日常工作。它将成为主应用程序窗口的某种平台,用户可以从那里访问某些应用程序组件,例如当用户可以向我提供有关应用程序功能的反馈时的子程序,然后信息将存储在我以后可以访问的数据库中。
我已经有了一个结构:一个Application类,它包含Application Manager,这个类包含SubApp类型的字段数组。 SubApp类型包含子应用程序的视图,逻辑和业务。 Application类还包含成员,例如应用程序名称和当前使用该应用程序的用户信息(以前从应用程序数据库访问)。
每当子应用程序启动时,我想在标题栏上添加应用程序的名称以及子应用程序的名称,例如application_name - sub_app_name。问题是,我不知道如何以正确的方式访问它'。最近我通过将app变量创建为全局对象来实现这一点,然后使用一些getter访问它是没有问题的。但我觉得将应用程序变量存储为全局变量是一种不好的做法。
存储有关当前用户的信息的成员变量也会出现同样的问题。我希望在他提供反馈时存储有关当前用户的信息(提供反馈的工具是我应用程序中的子应用程序)
所以这是我的问题:如何从一个成员方法/变量中访问包装对象的方法/变量?
欢迎任何关于申请总体设计的建议。
答案 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;
}
};
}
}