三层架构中策略、工厂等设计模式类的放置位置咨询
三层架构中设计模式类的放置方案
策略模式的放置建议
- 策略实现类直接放在
Services层下,可单独创建strategies子文件夹统一归类,比如Services/strategies/PaymentStrategy.java。毕竟策略本身就是业务逻辑的具象化,属于Services层的核心职责范畴。 - 策略的抽象接口(比如
IPaymentStrategy)放在Models文件夹,因为它是业务行为的抽象定义,和业务对象接口的定位一致。
循环依赖的解决思路
如果策略需要调用其他服务,别直接在类里硬编码实例化,用依赖注入通过构造函数传入依赖。比如在PaymentStrategy的构造函数中注入UserService和OrderService,从根源上避免循环引用问题。
其他设计模式的放置参考
- 工厂模式:
- 业务对象创建工厂:放在
Services层的factories子文件夹 - 数据层对象创建工厂:放在
Data层 - 通用工具类实例工厂:放在
Utils层
- 业务对象创建工厂:放在
- 建造者模式:
- 业务实体(如复杂订单)的建造者:放在
Services层,抽象接口放Models - 接口传输用DTO的建造者:放在
Presentation层的dtos子文件夹下
- 业务实体(如复杂订单)的建造者:放在
- 状态模式:状态及状态机属于业务逻辑范畴,放在
Services层的states子文件夹,状态抽象接口放Models
通用原则
- 和业务强绑定的模式实现,全部归到
Services层,这是业务逻辑的核心载体 - 所有模式的抽象接口统一放在
Models,保证各层依赖抽象而非具体实现 - 无业务关联的通用模式实现,才考虑放在
Utils层
内容的提问来源于stack exchange,提问作者Aion
相关产品推荐
相关产品推荐

