当前位置: 首页 > 知识库问答 >
问题:

清洁体系结构中的共享实体

陆洛城
2023-03-14

我正在读clean architecture的书,我想把它应用到我写的一些软件中。在该软件中,UserGroup等实体扮演着非常重要的角色。出于这个原因,为了避免重复,跨代码共享这些实体是有意义的,但这也违反了清洁体系结构的规则。

在这种情况下,什么是正确的决定?我应该在核心中添加一个“shared/entities”文件夹吗?

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

共有1个答案

苏畅
2023-03-14

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

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

在设计接口时,一定要注意像SOLID这样的原则--尤其是接口隔离原则(SOLID中的I)。

  1. 定义iuser接口
  2. 让您的User类实现IUser
  3. 可以使用您的植入来实例IUSER,比如USER.
  4. 应用程序引用user-将其切换为使用Iuser.

回应评论的更新

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

class UserInfo
{
  string FirstName { get; set; }
  string LastName { get; set; }
  ITaxData TaxData { get; set; }
}

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

 类似资料:
  • 我不清楚如何取回购买服务不保存的数据--例如:用户的全名。当试图通过购买用户名进行更复杂的搜索购买时,问题会变得更严重。 我认为,显然可以通过在两个服务之间同步用户来解决这个问题,方法是在用户创建时广播某种类型的事件(并在购买服务端只保存相关的用户属性)。在我看来,这远非理想。当你有数百万用户时,你如何处理这个问题?您会在每个使用用户数据的服务中创建数百万条记录吗? 另一个明显的选择是在用户服务端

  • 在我们公司,我们正在从一个巨大的单体应用程序过渡到微服务架构。这一决定的主要技术驱动因素是能够独立扩展服务的需求和开发的可扩展性——我们有十个Scrum团队在不同的项目(或“微服务”)中工作。 过渡过程很顺利,我们已经开始受益于这种新的技术和组织结构的优势。现在,另一方面,我们正在努力解决一个主要的痛点:如何管理这些微服务之间依赖关系的“状态”。 让我们举一个例子:其中一个微服务处理用户和注册。该

  • 我试图使用Kotlin实现干净的架构。这一过程的流程将是: 代码示例:

  • Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。 Cep

  • 本文向大家介绍hdfs的体系结构相关面试题,主要包含被问及hdfs的体系结构时的应答技巧和注意事项,需要的朋友参考一下 解答: hdfs有namenode、secondraynamenode、datanode组成。 为n+1模式 namenode负责管理datanode和记录元数据 secondraynamenode负责合并日志 datanode负责存储数据

  • 冯·诺依曼体系结构 计算机处理的数据和指令一律用二进制数表示 顺序执行程序 计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。 数据的机内表示 二进制表示 机器数 由于计算机中符号和数字一样,都必须用二进制数串来表