实现领域驱动设计----第六章

当你决定以恶搞领域概念是否是一个值对象时,你需要考虑他是否拥有以下特征:

  • 它度量或者描述了领域中的一件东西
  • 它可以作为不变量
  • 它将不同的相关的属性组合成一个概念整体
  • 当度量和描述改变时,可以用另一个值对象予以替换
  • 它可以和其他值对象进行相等性比较
  • 它不会对协作对象造成副作用

如果你试图将多个属性加在一个实体上,但这样却弱化了各个属性之间的关系,那么此时你便应该考虑将这些相互关联的属性结合在一个值对象中了。每个值对象都是一个内聚的概念整体,它表达了通用语言中的一个概念。如果其中一个属性表达了一种描述性概念,那么我们应该把该概念相关的所有属性集中起来。如果其中一个或多个属性发生了改变,那么可以考虑对整体值对象进行替换。

实体的唯一标识时不能改变的,这可以部分地通过值对象地不变性达到。此外,我们还可以从值对象地概念整体特性中得到好处,因为实体的唯一标识是根据通用语言来命名的,并且需要在一个实例中得到好处,因为实体的唯一标识是根据通用语言来命名的,并且需要在一个实例中包含所有的可以标识唯一标识的属性。然而,这里我们并不需要值对象的可替换性,因为我们不会替换聚合根的唯一标识。尽管如此,我们依然可以在聚合中使用值对象。此外,如果实体的唯一标识需要一些无副作用的行为,这些行为便可以在值对象上实现。

最小化集成

在所有的DDD项目中,通常存在多个限界上下文,这意味着我们需要找到合适的方法对这些上下文进行集成。当模型概念从上游上下文流入下游上下文中时,尽量使用值对象来标识这些概念。这样的好处时可以达到最小化集成,既可以最小化下游模型中用于管理职责的属性数目。使用不变的值对象使得我们做更少的职责假设。

保持值对象的不变性
只有主构造函数才能使用自委派性来设置属性值,除此之外,其他方法都不能使用setter方法。由于值对象中的所有setter方法都是私有的,消费方是没有机会直接调用这些setter方法的。这是保持值对象不变性的两个重要因素。

持久化值对象

持久化过程即是将对象序列化成文本格式或者二进制格式,然后将其保存到计算机磁盘中。

对象-关系映射(ORM,比如Hibernate)持久化机制是流行的。但是,使用ORM将每个类映射到一张数据库表,再将每个属性映射到数据库表中的列会增加程序的复杂性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据中心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值