我知道:
- 清晰的架构是一种分层架构。 - 分为开放式分层架构和封闭式分层架构。 - 清晰的架构书籍建议每个层可以访问其内部层,而不仅仅是下一个内部层。
因此,我认为清晰的架构并不强制采用封闭式分层结构,它允许使用开放式分层结构。例如,在框架层中的UI可以直接访问实体(Entity),跨越两层。
我理解,如果清晰的架构强制采用封闭式分层结构,则我们不能直接从框架层实现存储库接口,而应该按照下一层的术语来实现它,这个下一层又应该按照它的下一层来实现它,以此类推。
现在我的问题是,为什么我们不能在用例或控制器层直接将实体(Entity)作为参数类型引入,而必须在中间层中定义数据结构或DTO,并费心地将实体转换为数据结构并将其作为响应返回,而我们被允许在控制器层使用和查看实体(Entity),因为访问规则没有被违反呢?
考虑以下示例,假设我们有:
- JobView - JobController - JobUseCase(RequestModel) : ResponseModel
JobEntity
(职位实体)现在如果 JobView
想要调用 JobController
,它应该传递 RequestModel
。那么我们能否直接将 JobEntity
作为 RequestModel
引入,像这样:
JobView
JobController
JobUseCase(JobEntity)
JobEntity
(职位实体)
我知道这样做会增加代码的脆弱性,因为这样如果我们改变了 JobEntity
,那么 JobView
也必须改变。但是干净架构是否强制要求遵循SOLID原则就像一条规则一样脆弱或刻板?!