首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整洁架构中的共享实体

整洁架构中的共享实体
EN

Stack Overflow用户
提问于 2021-06-20 20:09:00
回答 1查看 206关注 0票数 0

我正在阅读干净的架构,我想把它应用到我写的一些软件中。在这个软件中,像UserGroup这样的实体扮演着非常核心的角色。出于这个原因,为了避免重复,在代码中共享这些实体是有意义的,但这在某种程度上也违反了干净架构的规则。

在这种情况下,应该做出什么正确的决定?我是否应该在core中抛出"shared/entities“文件夹

我正在做的项目主要是在flutter中编程,如果这对答案很重要的话。

EN

回答 1

Stack Overflow用户

发布于 2021-06-21 07:09:03

我对Flutter或Dart一无所知(除了我刚刚搜索过的),但看起来它支持接口。

一种好的方法不是将用户和组放到共享文件夹中,而是创建它们的一些真正轻量级的表示,并将它们放入共享文件夹/公共库中。接口是一种很好的方法,因为在接口中,您可以指定应用程序的某些部分通常需要了解的重要基础知识,而无需添加特定于实现的负担和依赖关系。

在设计你的界面时,一定要注意像SOLID这样的原则--尤其是Interface segregation principle (SOLID中的i)。

更详细地说:

  1. 定义IUser接口
  2. 让您的User类通过某种方式使用您的实现来实例化IUser,如User.
  3. Where您的应用程序引用User -将其切换为使用Have

响应评论的更新

我通常的出发点架构是定义DTO,我在应用程序的所有层(UI、业务逻辑/数据访问)中共享这些DTO,基本上就像我认为您所建议的那样。对我来说,DTO是尽可能轻量级的--基本上是信息载体。这些是按照clean architecture在所有层中共享的,因此体系结构的不同层(例如,业务逻辑和数据访问)不会彼此紧密耦合。

然而,用户可能是一个特殊情况,因为他们可以拥有与安全/身份/凭证相关的东西,这些东西可以变得非常专门化和/或特定于实现和技术。我怀疑,这就是@duffymo关于紧密耦合的评论的部分原因。

对于我的回答,我基本上是说,是的,你可以把DTO放在一个通用的文件夹中--和对于棘手的情况(比如用户),你总是可以选择在它们上面定义接口……例如,用户DTO可能具有属性,这些属性是接口而不是具体属性。

代码语言:javascript
复制
class UserInfo
{
  string FirstName { get; set; }
  string LastName { get; set; }
  ITaxData TaxData { get; set; }
}

我承认这是完全有可能的,我用“(一些) DTO属性作为接口”的想法把事情复杂化了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68055682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档