首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

您的域模型对象应该有多少逻辑

您好,感谢您的提问。

在软件开发中,域模型是一种表示系统中业务领域的概念模型,它包含了系统中的实体、属性、关系和行为等。因此,域模型对象的数量取决于系统中的业务领域的复杂程度。

通常情况下,域模型对象的数量应该足够表示系统中的所有业务领域,并且能够处理所有的业务逻辑。如果域模型对象的数量不足,可能会导致系统的功能不完整或不准确;如果域模型对象的数量过多,则可能会导致系统的复杂度过高,难以维护和扩展。

因此,在设计域模型时,应该根据系统的业务领域和需求来确定域模型对象的数量。同时,应该遵循良好的软件设计原则,如单一职责原则、开闭原则和里氏替换原则等,以确保域模型的质量和可维护性。

希望这个答案能够帮助您解决问题。如果您有其他问题,欢迎随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spring Web 应用的最大败笔

    开发人员在使用Spring应用是非常擅长谈论依赖注入的好处。不幸的是,他们不是那么真的利用它的好处,如单一职责原则,分离关注原则。如果我们一起来看看大部分Spring的Web应用程序,常见的错误的设计如下: 1.领域模型对象用来存储应用的数据(当作DTO使用),领域模型是贫血模型这样的反模式。 2.服务层每个实体有一个服务。 问题是这样很普遍,错误在哪里呢? Spring的web应用程序之所以这样是因为他们做事物的方式一直都是这样做的,老习惯难改,特别是如果他们是高级开发人员或软件架构师,这些人捍卫这样做的论据之一是:我们的应用程序遵循关注分离的原则,因为它已经被分为若干层,每个层有自己的特定职责。 1. Web层负责处理用户输入,并返回正确的响应返回给用户。 web层与服务层通信。 2.服务层作为一个事务边界。它也负责授权和包含我们的应用程序的业务逻辑。服务层管理的域模型对象,并与其他服务和存储库层进行通信。 3.存储库/数据访问层负责与所使用的数据的存储进行通信。 分离关注(Soc)是分离计算机程序为不同的部分,每个部分有一个关注聚焦,一个典型的Spring Web应用在一定程度上遵循这一原则,但现实是,该应用程序有一个整体的服务层,它有太多的责任。更具体地,服务层有两个主要问题: 1.在服务层发现业务逻辑 业务逻辑被分散在各个服务层。如果我们需要检查一个业务规则是如何实现的,我们必须先找到它。这可能并不容易。此外,如果相同的业务规则需要在多个服务类,问题是,规则需要从一个服务到另一个简单地复制。这将导致维护的噩梦。 2.每个领域模型一个服务 这完全违反了单一职责原则,它被定义为如下:单一职责原则指出,每一个类都应该有一个责任,责任应该由类完全封装。其所有的服务应该狭义与责任相一致。(不应将原属于领域模型的行为方法等划放在服务中实现,对象不但有属性还有行为) 服务类有很多依赖,以及大量的循环依赖。更像网络紧密耦合和单片服务。这使得很难理解,维护和重用。这听起来有点苛刻,但一个Spring的web应用的服务层往往是最容易出问题的部分。幸运的是,所有的希望都不会丢失。 1. 我们必须将我们的应用程序的业务逻辑从服务层迁移到领域模型类中。 举个例子:假设我是一个服务类,你是一个域模型对象。如果我让你从屋顶上跳下来,你会喜欢我这样的决定吗?(跳下来会摔伤,自己没有脑子或被洗脑,变成僵尸,只听从执行,不思考自己的安全,这就是贫血模型的问题) 将业务逻辑从服务层迁移到域模型类有下面三个优势: (1)我们的代码将以逻辑方式切割,服务层只要关注应用逻辑,而我们的领域模型关注业务逻辑。 (2)业务逻辑只存在一个地方,容易发现修改。 (3)服务层的源代码是清洁的,不包含任何复制粘贴代码 2. 将每个实体服务切割为单一目标的更小的服务。 比如,有一个单一服务类,提供对人员和用户账户的CRUD操作,我们应该将它分为两个独立的服务类: 第一个是对人员的提供CRUD操作 第二个是提供与用户账户相关的操作。 好处:每个服务类中有一个逻辑组职责。每个服务类的依赖较少,这意味着他们不再是紧耦合的源头。他们是较小的和松耦合的组件。服务类更容易理解,维护和重用。 这两个简单的步骤将帮助我们使得我们的应用程序架构更干净,有助于同行开发商提高生产力和幸福。

    01

    论可复用的游戏服务器端开发框架(三)

    引导类系统的可复用模型 说到游戏中的“引导类系统”,最常见的就是所谓“新手引导”,这些专门设计的游戏流程,让玩家一步步的按规定顺序去操作游戏。而“任务系统”,也是最著名的引导类系统,这个最初只是基于NPC机关的小玩法,现在已经成为几乎所有游戏的标配。并且后续还出现了“每日奖励”,“日常任务”,“活动任务”,甚至“成就系统”等各种变种。这几个系统的核心逻辑,都是策划预设了一条“任务链”,让玩家通过操作,来改变自己在“任务链”上的位置。另外一种很特别的引导类系统,就是商店。最古老的游戏中都会有商店,到现在的游戏

    08

    一些设计上的基本常识

    最近给团队新人讲了一些设计上的常识,可能会对其它的新人也有些帮助, 把暂时想到的几条,先记在这里。 1. API与SPI分离 框架或组件通常有两类客户,一个是使用者,一个是扩展者, API(Application Programming Interface)是给使用者用的, 而SPI(Service Provide Interface)是给扩展者用的, 在设计时,尽量把它们隔离开,而不要混在一起, 也就是说,使用者是看不到扩展者写的实现的, 比如:一个Web框架,它有一个API接口叫Action, 里面有个execute()方法,是给使用者用来写业务逻辑的, 然后,Web框架有一个SPI接口给扩展者控制输出方式, 比如用velocity模板输出还是用json输出等, 如果这个Web框架使用一个都继承Action的VelocityAction和一个JsonAction做为扩展方式, 要用velocity模板输出的就继承VelocityAction,要用json输出的就继承JsonAction, 这就是API和SPI没有分离的反面例子,SPI接口混在了API接口中, 合理的方式是,有一个单独的Renderer接口,有VelocityRenderer和JsonRenderer实现, Web框架将Action的输出转交给Renderer接口做渲染输出。

    01

    DDD 领域驱动设计落地实践系列:战略设计和战术设计

    通过前面的文章介绍,相信大家对于什么是 DDD 有了初步的了解,知道它是一种微服务的架构设计方法论,为我们解决如何建立领域模型,如何实现微服务划分等提供了方向和指导。但是对于如何具体落地使用 DDD,可能大家还是一脸懵 B 的状态,因此从本文开始以及后面的文章将对如何进行 DDD 落地进行详细的阐述。在这其中还是会涉及到 DDD 中的一些重要概念,原本想着在一篇文章中介绍所有的概念,但是我觉得,概念总是在它该出现的时候出现才会让大家印象深刻,否则这些概念只是死板的概念,我们不清楚他为什么出现以及可以解决什么问题。

    01

    【干货】爆款最新机器学习论文,揭秘黑盒子模型

    近年来,许多准确的决策支持系统被构建为黑盒子,即向用户隐藏其内部逻辑的系统。缺乏解释性既是实际问题,也是道德问题。这篇综述文献报道了许多旨在克服这一至关重要弱点的方法,有时以牺牲准确性为代价来提升可解释性。可以使用黑盒决策系统的应用是多种多样的,并且每种方法通常被开发以提供针对特定问题的解决方案,并且因此,其明确地或隐含地描绘其自身对可解释性的定义。本文的目的是提供调研文献中关于解释概念和黑匣子系统类型的主要问题的分类。给定问题定义,黑匣子类型和所需解释,此综述应该有助于研究人员找到对他自己工作更有用的建议。所提出的黑匣子模型分类方法也应该有助于对许多研究开放性问题。

    03

    DDD实战进阶第一波(二):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架一)

    本系列文章 DDD实战进阶第一波(一):开发一般业务的大健康行业直销系统(概述) DDD实战进阶第一波(二):开发一般业务的大健康行业直销系统(搭建支持DDD的轻量级框架一) 要实现软件设计、软件开发在一个统一的思想、统一的节奏下进行,就应该有一个轻量级的框架对开发过程与代码编写做一定的约束。 虽然DDD是一个软件开发的方法,而不是具体的技术或框架,但拥有一个轻量级的框架仍然是必要的,为了开发一个支持DDD的框架,首先需要理解DDD的基本概念和核心的组件。 一.什么是领域驱动设计(DDD)  首先要知道DD

    05
    领券