0

所以我有一个场景,值id需要在不同的对象之间传递,但每个对象的实例化是以层次结构的顺序。如果需要在多个对象之间传递值,那么哪种消息传递方法适合?

例如:

ObjA 
    - Gets and id from web service 
    Instantiate ObjB - (Obj A passes id to Obj B while instantiating) 
    - Obj B instantiates Obj C (Obj B passes id to Obj C while instantiating) 

它进到5-6级消息传递和分层对象实例化的。

但实例化对象之间传递的消息似乎是多余的。所以我在想,如果我创建一个单例类并且每个对象都在单例中访问相同的值,会更好吗?或者有更好的方法吗?

+0

你也可以日将它作为上下文的墨水(对象中的数据在该id的上下文中)。然后,你可以有一些容器类型的ID和相关的消息存储在其中。 – BitTickler

+0

对不起,我不明白。如果您能向我展示一些代码示例,我将不胜感激。 :) –

+0

Singleton是一种反模式。它使代码无法测试,并阻止多线程。传递ID(或包含该ID的上下文对象)很好。 –

回答

0

也许所有的对象都可以扩展一个通用接口。让说

Interface SomeObject{} 

现在在最顶层,你可以创建一个列表

final List<SomeObject> objects = Arrays.asList(new Object1(), new Object2() and so on); 

现在,当你得到的ID,您可以运行(使用该名单也将保持设置ID的顺序如果这是非常重要的。

for(SomeObject obj: objects){ 
    obj.setId(ID); 
} 

或者你可以使用流得到它在更少的代码来完成。