美文网首页
工程架构 2023-02-17

工程架构 2023-02-17

作者: 9_SooHyun | 来源:发表于2023-02-16 23:43 被阅读0次

    工程架构设计的核心是面向接口编程

    展开来讲,就是架构需要分层,层之间通过interface交互而不依赖具体实现,达到高内聚低耦合的效果

    什么是好的工程架构

    • 不依赖特定UI
    • 不依赖特定框架。从web框架换成桌面应用框架,whatelse,不影响业务逻辑
    • 不依赖特定外部组件。例如可以使用任意db,如mysql、mongo,不与某一基础设施强耦合

    如何做到好的工程架构

    总的原则还是面向接口编程,接口可以解耦,可以替换成任何不同的具体实现而不影响业务逻辑本身

    clean-architectrue.JPG

    具体地,一个好的工程架构如上图示范

    • 越外层(主要指使用的基础设施)越具体,越容易变化;越内层(主要指业务逻辑本身)越抽象越核心,越不容易变
    • 内层是高度抽象的,只能跟着业务逻辑变化,而不受基础设施变化的影响。内层不能依赖外层,而是外层依赖内层。那么如何理解DB这些基础设施要去依赖内层的业务逻辑?这是因为,是业务逻辑定义了外部基础设施的interface,然后随便你什么基础设施去做interface的具体实现,把具体实现注入到内层(如use cases)即可(内层预留注入口)

    说到这里可能还是略微有点抽象,其实golang的OpenTelemetry-Go就是个很好的案例

    OpenTelemetry-Go提供了一套Telemetry interface,也提供了具体实现
    当然,如果你不喜欢它的实现,你可以自行对Telemetry interface进行实现

    任何的具体实现,都可以通过如SetTracerProvider这类的方法注入到工程中使用

    // SetTracerProvider registers `tp` as the global trace provider.
    func SetTracerProvider(tp trace)
    

    相关文章

      网友评论

          本文标题:工程架构 2023-02-17

          本文链接:https://www.haomeiwen.com/subject/ielmkdtx.html