在 Go 中的分层设计 - iRi

主要观点:介绍在 Go 中设计程序的方法,强调 Go 中包不能循环引用的规则及应对循环依赖的多种方法,认为此方法能使每个包自身有用且能减少耦合。
关键信息:

  • Go 规则:包不能循环引用,编译错误。
  • 设计方法:通过分层处理包,从底部开始逐层抽取不相互引用的包,形成层次结构。
  • 避免循环依赖方法:

    • 移动功能:将导致循环的部分移到正确位置,可提高包的概念清晰度。
    • 创建新包:将导致循环的东西移入新包,可促进包的演化。
    • 组合循环包:提取循环依赖,用新包实现任务。
    • 接口破环:用接口替代具体类型打破循环。
    • 复制依赖:在循环包中复制代码。
    • 考虑合并包:若其他方法不可行,可能代码应在一个包中。

    重要细节:

  • 包是 Go 中隐藏信息的主要方式,不能将所有东西放入一个包。
  • 展示从真实项目中提取的包层次结构示例图。
  • 说明此设计方法并非规定性,而是描述性,其他设计方法需基于此结构。
  • 介绍此方法的优点,如理解代码时需理解的包数量有限,避免循环导入等。
  • 提及不同场景下可使用的高层设计模式,但应局限于合适的部分。
  • 强调 Go 对循环依赖的限制及不同设计方法在 Go 中的适用性。
阅读 8
0 条评论