java - 使用不同对象访问同一类变量的设计

标签 java android

我是 Android 开发人员,一直致力于一些实现设计。这是我的基本设计:

Class x extends a{

y obj = new y();
y obj2 = new y()
}
Class y extends a{

z obj3 = new z();
}

我需要什么:在obj1中需要到达obj2的obj3'函数(setChecked)

我所做的尝试: 解决方案尝试 1-) 类 y 扩展 x 而不是 a,但是当我尝试到达 obj2 时,它是不同的对象,其中 x 对象创建,因此 y 对象是不同的! 解决方案尝试 2-) 尝试使用单例模式,因为它只是创建一个对象。但正如你所知,它应该是静态的。但在android中,activity变量不应该静态创建,而应该动态改变。

引用:

a : BaseAdapter

z : ToogleButton

我正在尝试:在android中,我确实实现了导航栏。 Listview 对象有两个子 ListView 对象,我使用了具有较低 api 支持的解决方案。在第一个子 ListView 对象的 Tooglebutton 状态发生更改时,它应该更改子第二个 ListView 对象的 Tooglebutton。

最佳答案

快速提示:出于可读性目的,类名最好以大写字母开头,并使其长度略长于 1 个字符,即使是为了示例目的也是如此。

您通常不想从另一个对象访问一个对象的私有(private)字段 - 这会破坏封装并使您很难以任何方式更改该字段,因为您无法真正知道谁在引用它。

您需要做的是在 y 类上提供一个访问器方法,该方法为您调用 obj3 上的相关方法。这有效地封装了 y 类行为背后的 obj3 字段。

示例:

Class MyClassX extends SomeClassA {
    private final MyClassY obj = new MyClassY();
    private final MyClassY obj2 = new MyClassY()

    public final void doSomeComplexStuff() {
        ...
        obj2.setChecked(true);
        ...
    }
}

Class MyClassY extends SomeClassA {
    private final MyClassZ obj3 = new MyClassZz();

    public final void setChecked(final boolean checked) {
        obj3.setChecked(checked);
    }
}

因此,当您调用 obj2.setChecked(true) 时,该调用将传递到 obj2 中包含的 MyClassZ 实例。

关于java - 使用不同对象访问同一类变量的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34479068/

相关文章:

android - 在平板电脑上膨胀 GridView 时出错

javascript - 在 Cordova Android 应用程序上使用后退按钮关闭模态窗口

java - 包含签名的电子邮件

java - Elasticsearch:使用 java native api 重写查询

java - <> 在 Java 中做什么?

android - 如何使用任何模拟 Api for junit 模拟蓝牙适配器

java - PostAdapter 返回错误的帖子 postid

Java Servlet 编程

java - 如何使用 java netbeans 更新 MS Access 表中的特定行?

Android Emulator 启动但 Eclipse 无法识别