大家代码怎么分层的,如何解决循环依赖的问题
问题描述?
用的echo
写web。简单分了控制器层web package
,服务层services package
和模型层models package
。
现在有个product_service
是从别的数据源更新商品信息,返回商品模型,商品模型还会调用str_service
传入数字id返回hash后的字符串id,控制器引入模型的时候就会发生循环引用.
控制器->导入商品模型->导入字符串服务->发现同一个包下的商品服务又引入了商品模型
自己想了几个办法
- 商品服务返回
map
而不依赖模型,调用方再去做map
转模型的工作,这样谁调这个服务都得骂娘了,一个项目的服务还要自己再转换一遍 - 加一个模板方法,数字转字符串放到模板做,不用模型来做,但是模型相关的方法放模型里再正常不过啊
- 再建个子文件夹分成业务服务包
business_service
和基础服务包base_service
,业务包可以引入模型,基础包不能
感觉都不太理想,都说项目规划之初就要设计好,问题是业务发展的快,谁能想到以后那么多需求啊
你的字符串服务应该是一个最最最底层的无依赖util,不应该耦合业务逻辑的。我看你的描述是,作为数据模型的下层出现了引用作为模型逻辑聚合的service层。如果是仅仅是业务无关的工具逻辑要抽离出来放在util/lib/core里。