依赖性地狱 - 如何将依赖关系传递给深度嵌套的对象?
这是为这篇文章编造的一个通用的虚构例子。考虑 6 类
TableFactory, TableData, TableCRUD, TableSchema, DBConnect, Logger.
TableFactory
是外部类,假设它保存数据库表的对象。TableData
在此,没有对 或 的调用。我的目标是一个外部范围中不需要的内部对象的示例。TableFactory
TableSchema
DBConnect
logger
TableData
是一个内部抓取并对数据进行操作,因此它需要 和 。TableCrud
DBConnect
Logger
TableCrud
包含 和 需要 和 。TableSchema
DBConnect
Logger
DbConnect
itseld,为了让事情变得有趣,需要一个Logger。我的例子现在是3个范围深度。
我的问题很简单,如果你有一个对象3(或更多)作用域,而外部作用域上的对象没有调用,那么如何在不违反接口隔离原则的情况下将这些对象从外部作用域发送到内部作用域 - >TableFactory不应该处理内部对象所需的DBConnect或Logger。
如果一个人尊重基本的OOP原则,并致力于易于测试 - >你就会有外部对象需要注入5个对象,然后有getter方法将所需的对象传递到链的更远的地方。而内部作用域对象反过来又需要注入其内部 3 作用域深对象的依赖项,这些对象也需要 getter。这使得外部作用域对象需要许多依赖项,而 getter 只是为了传递这些依赖项。
除了这种对象传递方法之外,有没有另一种选择,这是我一路上错过的?请分享!任何链接/评论赞赏。