需求说明:

  • 省级用户可以登记国家指标
  • 省级用户和市级用户可以登记指标分解
  • 登记国家指标时,需要录入以下数据:指标批次、文号、面积,这里省略其他数据,下同
  • 登记指标分解时,需要录入以下数据:指标批次、文号、面积,以及可以选择多个市(市级登记的时候是县)的指标,每个市(县)的指标也是要输入批次、文号、面积
  • 登记指标分解时,一个指标批次不能选择多个相同的市(县)
  • 登记指标分解时,需要判断当前剩余面积是否足够,比如省登记的时候,要看国家本年度下发给省的指标面积是否大于省本年度所以指标面积,登记国家指标不需要这个判断
  • 指标登记完后,需要下发,下发后,对应的市县才能看到数据
  • 国家下发给省,省下发给本省和市,市下发给本市和县,县不能下发,只能查看市下发的数据
  • 下发给下级的叫下发指标,下发给本级的叫预留指标
  • 每次登记的年度都是用当前年度
  • 每次登记都要生成一个项目编号,规则为100001+行政区+6位流水号

提取领域模型:

  • 我们这里省略那些高大上的建模、什么共同语言等,直接进入话题,要的就是一个合理的模型,不管是怎么提取的,怎么抽象出来的,就是要一个结果
  • 下面是我提取的模型,英文太烂,所以命名看起来很不舒服,欢迎拍砖
  • /// <summary>
    /// 指标实体
    /// </summary>
    public class Indicators
    {
    /// <summary>
    /// ID
    /// </summary>
    public string Id { get; protected set; }
    /// <summary>
    /// 项目编号
    /// </summary>
    public string Number { get; set; }
    /// <summary>
    /// 面积
    /// </summary>
    public decimal Area { get; set; }
    /// <summary>
    /// 批次
    /// </summary>
    public decimal Batch { get; set; }
    /// <summary>
    /// 文号
    /// </summary>
    public decimal DocumentNumber { get; set; }
    /// <summary>
    /// 下发文号
    /// </summary>
    public decimal SubDocumentNumber { get; set; }
    /// <summary>
    /// 年份
    /// </summary>
    public int Year { get; set; }
    /// <summary>
    /// 当前用户的行政区编码
    /// </summary>
    public string CityCode { get; set; } }

      

模型说明:

  • 类的命名用Indicators应该没有问题,直接用“指标”翻译的
  • 至于为什么要Parent和Items,是因为在下发指标分解的时候,需要填写一个预留指标和多个下发指标,所以构成了一个树的结构,当然业务只有两级的
  • 实践中,其实不需要两级,虽然看起来每次登记指标分解的时候,都需要输入预留指标和多个下发指标,但是他们从结构上没有关系,只是引用同一个批次构成了一个整体而已

DDD领域驱动设计实践篇之如何提取模型的更多相关文章

  1. DDD领域驱动设计之领域服务

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 什么是领域服务,DDD书中是说,有些类或者方法,放实体A也不好,放实体B ...

  2. DDD领域驱动设计之聚合、实体、值对象

    关于具体需求,请看前面的博文:DDD领域驱动设计实践篇之如何提取模型,下面是具体的实体.聚合.值对象的代码,不想多说什么是实体.聚合等概念,相信理论的东西大家已经知晓了.本人对DDD表示好奇,没有在真 ...

  3. DDD领域驱动设计之领域基础设施层

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 其实这里说的基础设施层只是领域层的一些接口和基类而已,没有其他的如日子工具等代码,仅仅是为了说明领域层的一些基础 ...

  4. DDD领域驱动设计之运用层代码

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 4.DDD领域驱动设计之领域服务 5.整体DEMO代码 什么是运用层,说 ...

  5. DDD领域驱动设计

    DDD领域驱动设计实践篇之如何提取模型 需求说明: 省级用户可以登记国家指标 省级用户和市级用户可以登记指标分解 登记国家指标时,需要录入以下数据:指标批次.文号.面积,这里省略其他数据,下同 登记指 ...

  6. 浅析DDD——领域驱动设计的理解

    浅析DDD--领域驱动设计的理解 我觉得领域驱动设计概念的提出,是为了更清晰的区分边界.这里的边界包括业务边界和功能的边界,每个边界都包含具体的领域对象,当业务和功能的领域对象一一对应上之后,业务的变 ...

  7. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  8. DDD 领域驱动设计-商品建模之路

    最近在做电商业务中,有关商品业务改版的一些东西,后端的架构设计采用现在很流行的微服务,有关微服务的简单概念: 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独 ...

  9. DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(3)

    上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDbContext 的实践(2)> 这篇文章主要是对 DDD.Sample 框架增加 Transa ...

随机推荐

  1. DDX_Text ()函数 C++

    DDX_Text()函数管理着对话框.表格视或控件视对象中的编辑控件与对话框.表格视或控件视对象的CString型数据成员之间的int,UINT,long,DWORD,CString,float或do ...

  2. dos2unix unix2dos

    实现windows和linux之间的文件自动转换,消除^M.

  3. Jpanel和container和jframe的区别

    Jpanel和container和jframe的区别 (2012-05-23 19:15:11) 转载▼ 标签: 杂谈 分类: room 看到上上面的几张图,container容器是位于最高层. 下面 ...

  4. asp.net下简单的Epplus导出excel

    引用的命名空间 using System.IO; using OfficeOpenXml; /// <summary> /// 导出excel /// </summary> / ...

  5. third class

    09remain timer 1.button的背景改变:放在背景图片里面,改变背景图片的位置,这样更简洁 08 simple clock 1.上下padding一样,居中2.setInterval( ...

  6. second class

    nothing no very good. 1.look at shuruo.html,after display:inline-block; li's width as the content; S ...

  7. 8天入门wpf(转)

    8天入门wpf—— 第一天 基础概念介绍 8天入门wpf—— 第二天 xaml详解 8天入门wpf—— 第三天 样式 8天入门wpf—— 第四天 模板 8天入门wpf—— 第五天 数据绑定 8天入门w ...

  8. office中通过宏添加快捷键

    把“Microsoft 公式 3.0”作为一个按钮放在 2013中的快速访问工具栏的方法 在使用office办公软件的过程中,因为有的人还在使用office2003版本,所以在使用高版本的office ...

  9. iscroll5 上拉,下拉 加载数据

    我这里的思路是上拉时候只是加载第一页的内容,可根据实际情况修改其中的代码.请勿照搬.样式没怎么调,可以加载gif动画.1.没有数据时候,下拉可以加载数据.2.没有数据时候,点击也可以加载数据.3.其余 ...

  10. 数据库软件dbForge Studio for MySQL更新至v.6.1

    本文转自:慧都控件网 说到MariaDB,这个数据库算是MySQL的一个分支.现在非常的流行,很多地方都能看到它的身影.MariaDB作为一种新的数据库管理系统,在短时间内获得如此高的关注度.这也是D ...