`
atusoft
  • 浏览: 55194 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

领域驱动设计学习笔记(1)

阅读更多

关联简化,从而让模型更清晰
指定一个导航的方向
加入限定符减少关联的多重性
清除不必要的关联

模型分为实体,值对象,服务对象三种
实体应具有唯一标识(ID)来进行区分
值对象则为只关心它们是什么,而不关心它们谁是谁的对象,所以不需要分配标识。通常是临时对象,经常作为实体的属性和其他值。设计时需要对复制,共享和不变性作出选择。值对象之间的双向关联是没有意义的
服务,强调与其它对象的联系,往往代表一种行为,而不是一个实体,它有一个定义好的职责,调用的参数和返回的结果应该是领域对象。

服务的特征
与领域概念相关的操作不是实体和值对象中固有的部分。
接口根据领域模型中的其他元素来定义
操作是无状态的

如果一个功能在该领域中有意义并且相关,则属于服务对象,否则则为应用层对象

实现聚合的规则
根实体具有全局标识,并最终负责对不变量的检查
根实体具有全局标识,边界之内的实体具有本地标识,这些标识仅在聚合内部是唯一的
聚合边界以外的任何对象除了可以引用根实体,不能持有任何对其内部对象的引用。根实体可以把其内部实体的引用传递给其他对象,但是它们只能临时使用这种引用,而不能持有这种引用。根还可以复制一个值对象的副本传给另一个对象,它并不关心这个副本会发生什么变化,因为那只是一个值,而且与聚合已经不再有任何关联了。
作为上一条规则的推论,能通过数据库查询直接获得的对象只有聚合根,所有其它对象必须通过导航关联来访问
聚合内的对象可以持有其他聚合根的引用
删除操作必须一次性删除聚合边界内的所有对象
当在聚合边界内发生的任何对象修改被提交时,整个聚合的所有不变量必须都被满足。

将创建复杂对象或聚合的实例分离到一个单独的对象中来,这个对象提供了一个将所有复杂的组合封闭起来的接口,这样客户就无需引用它要实例化的对象的具体类了,用工厂创建聚合,并保证不变量得到满足

工厂的要求
每个创建方法是原子的,并保证满足不变量
应该将构造结果抽象到所需的类型,而不是它所创建的具体类的类型

分享到:
评论

相关推荐

    linux驱动程序设计学习笔记

    以上就是《Linux设备驱动程序》第三版学习笔记的主要内容,涵盖了Linux驱动开发的各个方面。通过深入学习和实践,你可以掌握构建高效、可靠的Linux驱动程序的技巧,为你的Linux开发事业奠定坚实的基础。

    灰狐驱动学习笔记系列文章

    灰狐的驱动学习笔记系列文章以其深入浅出、注重实践的特点,为驱动开发领域的学习者提供了一条清晰的学习路径。从环境搭建到高级主题的探索,灰狐用亲身经历和实践经验,帮助读者避免了许多常见的陷阱和误区,使得...

    VHDL语言学习笔记

    在学习笔记中,可能会包含一些典型的设计实例,如七段显示驱动器、UART串口控制器、简单的数字信号处理器等,帮助理解VHDL的实际应用。 8. **库和标准包** VHDL标准库包括IEEE库,其中的std_logic_1164库提供了...

    灰狐驱动学习笔记系列源码

    【灰狐驱动学习笔记系列源码】是一份专注于Windows驱动开发技术的学习资源,它包含了"灰狐驱动学习笔记"的文章源码,旨在帮助开发者深入理解并掌握Windows驱动的开发技术。这一系列的学习资料是《Windows驱动开发...

    灰狐驱动学习笔记系列

    总之,《灰狐驱动学习笔记系列》是一套全面且深入的教程,适合那些希望进入或深化驱动程序开发领域的读者。通过学习这个系列,读者不仅可以掌握驱动程序的基本原理,还能获得解决实际问题的能力,从而在硬件与软件...

    bspmake的驱动学习笔记视频1(windows驱动开发技术详解)

    【标题】"bspmake的驱动学习笔记视频1(windows驱动开发技术详解)"涉及的是Windows驱动程序开发的基础知识,bspmake可能是一个用于驱动构建或管理的工具。在这个视频教程中,你将深入理解Windows驱动的工作原理、开发...

    驱动二期学习笔记

    "驱动二期学习笔记"显然聚焦于这一领域的深入探索,特别是针对JZ2440处理器的驱动程序开发和U-Boot引导加载器的理解。JZ2440是一款常见的嵌入式微处理器,常用于教学和开发用途,因其简洁的结构和丰富的资源而受到...

    软件开发学习笔记

    这份"软件开发学习笔记"涵盖了多个编程语言和技术领域,如C#、Delphi、VB.NET以及DLL库的开发,还包含了ICCO Development Help的相关资料,旨在帮助学习者深入理解软件开发的核心概念和实践技巧。 首先,C#是一种...

    C++ 学习笔记 整理

    C++是一种强大的、通用的编程语言,被广泛应用于系统软件、应用软件、游戏开发、设备驱动、嵌入式系统等领域。这份"C++学习笔记"涵盖了C++的基础到高级概念,旨在帮助初学者和有一定经验的程序员深入理解并掌握C++。...

    OA项目学习笔记下载

    本压缩包包含了一份OA项目的学习笔记,是深入理解并掌握OA项目开发与实施的重要资料。 在OA项目学习笔记中,我们可以探讨以下几个关键知识点: 1. **OA系统概述**:OA系统通常包括工作流管理、文档管理、协同办公...

    Linux内核与设备驱动程序学习资料笔记+源码.zip

    Linux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序...

    学习linux底层驱动笔记

    以上内容只是Linux底层驱动学习笔记中的一部分,实际笔记可能还包含了更多细节,如设备注册、内存管理、电源管理等。学习Linux驱动开发不仅需要理论知识,更需要动手实践,通过阅读源码、编写驱动来加深理解。随着...

    电机控制学习笔记.zip

    本学习笔记主要涵盖了电机控制的基础理论、控制策略以及实际应用等方面的知识,旨在帮助学习者深入理解电机控制的核心原理。 电机是工业生产和日常生活中不可或缺的动力来源,其控制技术直接影响到设备的效率、精度...

    【C++学习笔记】一份详细的学习笔记,让你轻松掌握C++编程!

    C++是一种强大的、通用的编程语言,它的设计理念是面向对象,同时支持过程化编程,使得它在系统软件、应用软件、游戏开发、设备驱动程序等领域有着广泛的应用。 C++的学习首先从基础开始,包括变量、数据类型、...

    谭浩强C语言学习笔记

    谭浩强C语言学习笔记 这是一本关于C语言的学习笔记,涵盖了从基本概念到高级应用的所有方面。下面是从中提取的重要知识点: 一、C语言概述 * C语言的历史和发展 * C语言的特点:结构化、模块化、可移植性、高效性...

    80X86汇编语言程序设计学习笔记

    这份"80X86汇编语言程序设计学习笔记"是针对Intel 80X86系列处理器的汇编语言编程进行详细阐述的学习资料,适合对汇编语言感兴趣的程序员或计算机科学学生进行复习和深化理解。 80X86汇编语言的核心是基于Intel的...

    K64学习笔记

    【飞思卡尔K64学习笔记】 飞思卡尔K64系列微控制器是基于ARM Cortex-M4内核的高性能MCU,广泛应用于工业控制、物联网设备、嵌入式系统等领域。这款芯片以其强大的处理能力、丰富的外设接口以及低功耗特性而受到...

Global site tag (gtag.js) - Google Analytics