我想知道(必须有一个简单的解决方案),如果有一种方法可以创建许多对象,并在其他类和对象中使用它们,而不必更新它们(在Java中)。一个例子:
A,B和C类使对象成为b和c。 然后我有D级,它使对象d。 现在我想在a中使用d,更改它,在b中使用d,在那里更改它并在c中使用d并且仍然具有来自a和b的所有更改。 我知道在函数中使用d作为参数并返回d是可能的,但这在我正在制作的程序中没有用。
任何帮助?
好的,我在代码中的例子:
public class A {
D d = new D ();
A(D dObject){
this.d = dObject;
}
public void add () {
DObject.add(5);
}
}
public class B {
D d = new D ();
B(D dObject){
this.d = dObject;
}
public void add () {
DObject.add(5);
}
}
public class C {
D d = new D ();
C(D dObject){
this.d = dObject;
}
public void add () {
DObject.add(5);
}
}
public class D {
public int x=0;
public void add (int y){
x +=y;
}
}
// in main class:
D d = new D();
A a = new A(d);
B b = new B(d);
C c = new C(d);
a.add();
b.add();
c.add();
// d.x should give 15 now.
答案 0 :(得分:3)
看看Singleton pattern 它只适用于您需要D类的单个实例,但您可以创建一个单例来存储其他对象的引用。希望这会有所帮助。
答案 1 :(得分:1)
我不确定我是否理解正确 - 如果您更正了语法错误,您发布的代码与您所说的完全相同(d.x
为15)。
这是一个应该有效的版本:
public class A {
D d;
A(D dObject){
this.d = dObject;
}
public void add () {
d.add(5);
}
}
public class B {
D d;
B(D dObject){
this.d = dObject;
}
public void add () {
d.add(5);
}
}
public class C {
D d;
C(D dObject){
this.d = dObject;
}
public void add () {
d.add(5);
}
}
public class D {
public int x=0;
public void add (int y){
x +=y;
}
}
// in main class:
D d = new D();
A a = new A(d);
B b = new B(d);
C c = new C(d);
a.add();
b.add();
c.add();
// d.x should give 15 now.
如果您希望d
保持不变而不是更改(例如最后为d.x == 0
),您可以执行以下操作之一:
dObject
的克隆,因此每个都有自己的D
对象。D
不可变,让其add
方法返回一个新的D
对象。 add
,A
,B
的{{1}}方法将实施C
。答案 2 :(得分:-1)
根据您的描述,我认为您的意思是Immutable Objects。