大家代码怎么分层的,如何解决循环依赖的问题

问题描述?

用的echo写web。简单分了控制器层web package,服务层services package和模型层models package
现在有个product_service是从别的数据源更新商品信息,返回商品模型,商品模型还会调用str_service传入数字id返回hash后的字符串id,控制器引入模型的时候就会发生循环引用.

控制器->导入商品模型->导入字符串服务->发现同一个包下的商品服务又引入了商品模型

自己想了几个办法

  1. 商品服务返回map而不依赖模型,调用方再去做map转模型的工作,这样谁调这个服务都得骂娘了,一个项目的服务还要自己再转换一遍
  2. 加一个模板方法,数字转字符串放到模板做,不用模型来做,但是模型相关的方法放模型里再正常不过啊
  3. 再建个子文件夹分成业务服务包business_service和基础服务包base_service,业务包可以引入模型,基础包不能

感觉都不太理想,都说项目规划之初就要设计好,问题是业务发展的快,谁能想到以后那么多需求啊

最佳答案

你的字符串服务应该是一个最最最底层的无依赖util,不应该耦合业务逻辑的。我看你的描述是,作为数据模型的下层出现了引用作为模型逻辑聚合的service层。如果是仅仅是业务无关的工具逻辑要抽离出来放在util/lib/core里。

1年前 评论
讨论数量: 3

循环依赖遇到不好来的加接口,返回或者传参数用接口

1年前 评论

你的字符串服务应该是一个最最最底层的无依赖util,不应该耦合业务逻辑的。我看你的描述是,作为数据模型的下层出现了引用作为模型逻辑聚合的service层。如果是仅仅是业务无关的工具逻辑要抽离出来放在util/lib/core里。

1年前 评论
DianWang

参照java的就不错,dto-model-dao-service-controller-router

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!