如何将顶级对象传递给低级对象?

时间:2016-06-21 17:23:38

标签: software-design

我的意思是顶层是在程序的顶层之一(例如主函数)中创建的对象。在其他对象的代码中创建了一个低级对象。

所以让我说我的主要功能如下:

public static void Main(String[] args) 
{
    SomeClass topLevelObject = ...
    SomeOtherClass otherTopLevelObject = ...
}

现在,让我们说otherTopLevelObject创建一个对象,它本身会创建另一个对象,依此类推一个我们称之为lowLevelObject的对象

那么如果lowLevelObject需要topLevelObject怎么办?解决这个问题的好方法是什么? topLevelObject只需要沿构造函数树传递吗?或者也许最好完全避免这种情况。如果是这样,我该如何避免它们?

1 个答案:

答案 0 :(得分:0)

通常,您不希望在lowLevelObject topLevelObject上创建依赖关系。例如,如果lowLevelObject是将数据保存到磁盘,而topLevelObject是游戏的当前状态,那么您可能不希望lowLevelObject必须知道如何解释游戏的状态。相反,您应该topLevelObject能够实现某些接口或方法,例如Serialize,然后所有lowLevelObject需要做的就是知道如何处理序列化数据。

这样,当您创建实现崩溃日志记录的新SomeOtherClass2时,您无需修改​​lowLevelObject现在就知道如何解释崩溃数据。只需为Serialize实施SomeOtherClass2lowLevelObject已知道如何处理。