问题标签 [cyclic-dependency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 循环依赖迫使我根据状态拆分服务和工厂。可以吗?
我正在使用 MVVM 模式创建 JavaFX 桌面应用程序。每个都View
需要一个ViewModel
. ViewA viewA = new ViewA(new ViewModelA());
我决定不使用 ,而是使用工厂模式来抽象它。
ViewFactory 构造函数具有视图模型所需的其他服务的参数。例如,我的应用程序的一部分显示了存储在数据库中的所有图像集合,对应于CollectionsView
和CollectionsViewModel
。为了从数据库中检索所有图像和集合,我创建了一个CollectionService
,它被传递给 ViewFactory。
编码:
到目前为止一切都很好。问题从另一个开始View
,即ConnectView
,它基本上是一个底部带有连接按钮的数据库选择屏幕。当按下连接按钮时,视图应该变为主视图,CollectionsView
为了简单起见。
为了稍微抽象一下,我创建了一个ConnectionManager
接口(我知道这个名字不是最好的,但我想不出更好的名字。也许ConnectionNotifier
吧?)基本上是一种方法,表明已经建立了与数据库的新连接,并且获得相应的 SQLConnection
实例。
编码:
现在在 的实现中ConnectionManager
,当connected
被调用时,需要数据库的服务被实例化并且屏幕上的视图变为CollectionsView
.
为此,我创建了一个名为的新类NavigationService
,它使用创建视图并将其ViewFactory
设置为屏幕上的视图。
编码:
同样,一切正常。但是,如果我有一个View
不需要连接状态的附加设备怎么办?也许连接屏幕上的帮助按钮应该创建一个HelpView
?如何返回连接屏幕?要goToConnectView()
在导航器中添加一个,我必须将它传递ConnectionManager
给创建视图,而这又需要导航器。
所以要创建ConnectionManager
,我需要NavigatorService
,反之亦然。
我想过的解决方案:
- 创建没有导航器的连接管理器,创建导航器,然后只使用设置器。
- 创建没有导航器的连接管理器,创建导航器并在建立新连接时使用侦听器模式调用导航器。
- 将导航器拆分为
ConnectedStateNavigatorService
andNotConnectedStateNavigator
,这又需要将视图工厂拆分为ConnectedStateViewFactory
andNotConnectedStateViewFactory
。
我不喜欢选项 1,因为我不想依赖额外的语句,只是看起来很脏。
我也不喜欢选项 2,因为这种带有侦听器、事件等的执行流程在我看来更适合 C#,而不是 Java 的正确选择。再一次,我不得不依靠额外的addListener
电话。
虽然我不喜欢选项 3,但这是我选择的选项。但又一次感觉不对劲。代码开始变得杂乱无章,我在应用程序中将它们编码为接口的服务和工厂,这意味着每个实现都有额外的类。
我的问题是:你觉得这样好吗?
注意:我不想使用 mvvmFX 框架,因为我不喜欢所有的魔法并且也过于依赖反射。
(对不起我的英语,但我不是母语人士)
angular - Angular 8:无法实例化循环依赖 - ActivatedRoute
我正在尝试将APP_INITIALIZER
Angular 集成到我的项目中,以便在启动应用程序之前执行一些功能。当我在我的服务中使用来自 Angular的ActivatedRoute时,问题就出现了。
错误是:
我想我在内部使用了两次导入或类似的东西。基本上我尝试了其他一些配置,但最后总是给我同样的错误。
堆栈闪电战示例: https ://stackblitz.com/edit/angular-bhpe7m
预期行为:只是为了能够通过 ActivatedRoute 服务检索一些 QueryParams 并在运行 Angular 应用程序之前对它们执行一些功能
java - 如何解决此堆栈溢出错误?
StackOverFlow
当我尝试运行我的井字游戏程序时,我正在努力解决这个异常。
通过阅读堆栈跟踪,我知道StackOverFlow
错误是循环关系的结果。这是因为当我miniFrame
在构造函数内部实例化类时TicTacToeFrame
,一个TicTacToeFrame
对象被用作miniFrame
构造函数的参数。结果,这会导致无限递归。
TicTacToeFrame
构造函数实例化miniFrame dialogBox = new miniFrame (this)
.
这是将miniFrame
对象TicTacToeFrame
作为参数的构造函数。但是我不明白为什么JVM会StackOverFlow
在第9行发现错误:
我可以使用的另一种解决方案是-Xss
使用命令行增加堆栈帧大小的标志。但我觉得这可能是一种逃避。
java - 解决gradle中的循环依赖
我最近开始开发一个 java 项目,其中包含一些子项目。他们都是gradle。因此,假设有两个项目 A 和 B 已经实施。而且我要介绍另一个gradle项目C。依赖是这样的。
- A 依赖于 B
- B 依赖于 C
- C 依赖于 A
所以我需要在没有循环依赖错误的情况下实现这个项目 C,因为它是在我尝试使用 gradle 构建项目时给出的。我看到一些答案,Interface 是一个解决方案。但在我的情况下,项目 A 和 B 是大型项目,我想不出如何为它们引入接口。我唯一能做的就是为项目 C 引入接口。那么有没有办法解决这些案例的问题?如果没有这样的方法是什么?请注意,这些 A、B、C 项目是单独的项目,因此不能合并为一个项目。
javascript - 如何获取、解决和验证传递/循环依赖
我需要一些自定义方法来解析可能具有传递性的变量并验证循环/不可解析的字段。例如
我的预期输出是
c++ - 类的 C++ 循环依赖(单例)
我在编译具有循环依赖的类时遇到问题,我找不到编译代码的方法
主要问题出现在相互依赖的类链中
例如我有 6 个头文件(类)(A、B、C、D、E、F)
A 包含在 E
F、D 包含在 A 中
E 包含在 F、D 中
现在我有一个循环并且无法修复它
我简化了问题,然后创建了一个简单的例子来展示我的确切问题
有没有办法或解决方案来解决这个问题?
javascript - Typescript,React-循环依赖解决问题。TypeError:对象原型可能只是一个对象或null:未定义
我正在开发一个带有打字稿的反应应用程序。在我面临的问题中,有 2 个单独的接口和一个导入这些接口的组件类。问题是,当应用程序运行时,组件类尝试顺序导入两个接口,但是,接口也会相互导入,这会导致循环错误行为并导致应用程序崩溃,TypeError: object prototype may only be an object or null: undefined.
我将示例代码放在下面。此外,我无法修改作为接口内字段的数据模型。欢迎任何帮助。
注意:所有接口和类都位于不同的文件中。
ios - 循环依赖错误 J2OBJC 归档构建?
我的 Ionic/iOS 项目使用 J2OBJC 作为内置的内部 Xcode 设置时遇到循环依赖问题。
如 J2OBJC 文档中所述,我已经在我的 ionic 项目中设置了构建规则和设置。我已经根据需要添加了库、用户标题和框架搜索路径(首先只有应用程序目标,并且还尝试了应用程序目标和工作区)并创建了用户定义的 $J2OBJC_HOME 和(这可能不是要求的一部分)我也添加了 $PROJECT_DIR 。我还添加了 java 构建规则
"if [ ! -f "${J2OBJC_HOME}/j2objc" ]; then echo "J2OBJC_HOME 在 Settings.xcconfig 中没有正确定义,当前设置为 '${J2OBJC_HOME}'"; exit 1; fi; "${J2OBJC_HOME}/ j2objc" -d ${DERIVED_FILE_DIR} -sourcepath "${PROJECT_DIR}/App" --no-package-directories -use-arc --prefix Flowers=JOE -g ${INPUT_FILE_PATH};"
我已经构建了模拟器和 iPhone 并在两者上运行它们,它们似乎正在工作。但是,当我为项目存档(以便我可以创建 .ipa)时。我得到一个循环依赖错误。我尝试了很多事情,例如,项目的新开始,使用不同的 URL 作为搜索路径,使用递归和非递归,检查了几次文档,查看了论坛,但仍然没有解决方案。任何想法将不胜感激!
c++ - C ++:当两个类包含指向另一个类的指针时,如何解决派生类之间的模板循环依赖?
我有一个父类和一些从它派生的类。我想“配对”两个派生类,其中 eac 有一个指向另一个的指针。
代码示例:
我知道我可以用虚函数做到这一点,但我试图找到一种使用模板的方法。
我从http://qscribble.blogspot.com/2008/06/circular-template-references-in-c.html找到了一个解决方案:
但它只适用于两个固定类 A 和 B。考虑到我有很多派生类,我想“配对”其中的任何两个,我该如何解决这个问题?
更新 1. 修复第一个代码块中的拼写错误 更新 2. 我尝试了以下代码
它编译并打印B A
。但是这段代码正确吗?它有任何副作用吗?