从代码中的许多地方继续引用对象

时间:2017-06-16 13:35:42

标签: java reference

我想知道这个问题的最佳解决方案(可能是模式): 我有2个类引用了同一个对象

class A {
    ...
}
class X {
    A objectA;
}

class Y {
    A objectA;
}

问题是即使在一个类X或Y分配新对象时如何保持这些引用。 例如

class Y {
    A objectA;
    private void doSomething(){
          objectA = new A();  
    }
}

此时对象X已弃用引用,但我希望它知道此更改。 相互传递引用是不可接受的,因此对象X无法识别对象Y。

编辑: 这种模式可以在我的应用中不止一次存在,所以我不能使用Singleton

4 个答案:

答案 0 :(得分:0)

不要在AX中直接引用Y,而是将对象A存储在另一个类(例如ObjectStorage)中XY可以访问。

答案 1 :(得分:0)

您可以使用singleton design pattern

https://fr.wikipedia.org/wiki/Singleton_(patron_de_conception)

答案 2 :(得分:0)

如果您需要obejct,那么为什么要将新对象分配给同一个引用。为什么不为新对象创建新引用。

答案 3 :(得分:0)

OOP的一个关键原则是,您应该尝试创建彼此交互的松散耦合对象。在您的示例中,类X和Y都紧密耦合到A类。这不一定是坏事,但它总是值得问自己这两个类是否需要成员变量(objectA)。如果答案是肯定的,那么第二个问题也值得一提:类X和Y类都需要引用到A类的同一个对象实例吗?

这个问题的答案常常是否定的。换句话说,看到多个类依赖于公共类并不常见,但并不要求每个类都需要引用该公共类的同一个实例。

如果这个问题的答案是肯定的,那么你有一些选择。单身是一种选择,但通常有其他更好的选择 - Are there any viable alternatives to the GOF Singleton Pattern?