zoukankan      html  css  js  c++  java
  • 领域驱动设计学习笔记 实体

          对象建模倾向于引导我们将精力集中于对象的属性上。但是实体的基本概念就是一种抽象的连续性。这种连续性贯穿了对象的整个生命周期,甚至要经历多种实现形式。

          有些对象并不主要由它们的属性来定义的,它们体现了标识在时间上的延续性,甚至经常要经历多种不同的形态。有时,一个对象与另外一个对象有着不同的属性,但它们是互相匹配的;有时,一个对象与其他对象有着相同的属性,但它必须能跟那些对象区分开来。弄错对象标识会导致数据破坏。

          以标识作为其基本定义的对象称为“实体”。实体的类定义、职责、属性、关联都是围绕着它是谁进行考虑的,而不考虑它有那些特定的属性。即使实体并不会发生很大的变化,或者生命周期并不复杂,我们仍应该根据语义将它归类为实体,这样可以得到更清晰的模型和更健壮的实现。

          在特定的软件系统之外,比如银行交易、房子出租等等,标识也有着同样的重要意义。但是,有些标识只有在特定的上下文中才有意义。

          如果一个对象是通过标识而不是属性来确定的,那么就在模型中把标识作为这个对象定义的基本要素。保持类的定义简单明了,并着重考虑其生命周期中的连续性和唯一性。定义对象的方法能够把每个不同的对象区分开来,而无需考虑它的形态和历史。对那些需要通过属性比较来匹配对象的情况进行警惕。确保生成标识的操作能够为每一个对象产生一个唯一的结果,这可以通过在标识中附加一个具有唯一性保证的符号来实现。生成的标识可能来自外界,也可能是由使用这些标识的系统随机产生的;不管是使用什么方法,标识必须满足其在模型中所具有的唯一性。模型必须对“怎么是同一个事物”的具体含义作出定义。

         标识并不是现实实体所固有的,它之所以意义重大,是因为它非常有用。事实上,现实世界中的同一个事物在领域模型中有可能表示为实体,也有可能不表示为实体。

  • 相关阅读:
    RequireJS 模块化加载框架使用
    MySQL数据类型(最大值 和 最小值)
    utf-8的中文是一个字符占几个字节
    spring的事务是什么?与数据库的事务是否一样
    事务和锁机制是什么关系? 开启事务就自动加锁了吗?
    关于数据库主键和外键
    浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
    TCP/IP协议
    分库分表分区需要考虑的问题及方案
    Redis(十一):Redis的事务功能详解
  • 原文地址:https://www.cnblogs.com/laichenshui/p/1884484.html
Copyright © 2011-2022 走看看