Flutter Clean Architecture中不同BLoC能否共享UseCase?
不同BLoC间是否可以共享UseCase?
完全可以共享UseCase,而且绝对不建议重复实现,原因和处理方式如下:
- 从Clean Architecture的设计原则来看,UseCase是业务逻辑的抽象封装,它的核心价值就是复用性——只要某个BLoC的业务流程需要用到该UseCase的逻辑,就可以直接依赖它,无需重复编写相同代码。
- 针对你当前的架构场景:
- 你的
GetAllProductsUseCase属于Products Feature的Domain层,如果SalesBloc需要获取产品数据来支撑销售相关业务(比如选择关联产品生成销售单),直接在SalesBloc的依赖注入环节引入这个UseCase即可。 - 重复实现会导致代码冗余,后续业务逻辑变更时需要同时修改多份代码,大幅增加维护成本和出错概率。
- 你的
- 进阶优化建议:如果多个Feature都需要用到产品相关的通用业务逻辑,可以把这类通用的Domain层代码(比如基础的产品查询、增删改UseCase)抽离到独立的
core或shared/domain目录下,让各个Feature的BLoC统一依赖这个共享模块,架构会更清晰、更易于维护。
内容的提问来源于stack exchange,提问作者Nicolas D'Angelo
相关产品推荐
相关产品推荐

