gpt4 book ai didi

design-patterns - 如何在这里避免循环依赖

转载 作者:行者123 更新时间:2023-12-03 19:35:56 24 4
gpt4 key购买 nike

有没有办法避免循环依赖,除了混合模块,在这样的安排中(它是一个国际象棋应用程序)

详细描述:

  • Gui导入 ChessWidget 的模块模块;
  • ChessWidget只是包装ChessWorld模块和导入 CellButton ;
  • CellButton module 导入模块 Cell ;
  • ChessWorld模块导入 Board (代表它)和Players (通知他们并获取他们的 Action );
  • Board模块导入模块 Piece ;
  • Piece模块导入模块 Player ;

  • 这是问题所在:
    Player模块需要知道其他玩家和棋盘,因此导入 ChessWorld !

    简短描述:
    World模块需要了解 Player模块(甚至间接通过 Board/ Piece )和 Player需要了解 World .

    非常感谢帮助。

    PS:不是因为我不能使用循环依赖,而是因为它们是邪恶的。

    最佳答案

    关注 Dependency inversion principle : 介绍一个接口(interface),ChessWorld工具,在其上 Player取决于 -- 和/或 Player实现和在其上Piece依赖(取决于依赖的性质的细节,一个或两个可能是合适的)。这通常与 Dependency Injection 一起使用。 ,并且,如果依赖项需要动态实例化多个依赖项实例,则使用 Factory DP。

    关于design-patterns - 如何在这里避免循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1962283/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com