第七章 使用语言:一个扩展的示例

7.1货物运输系统简介

(1)这里讲到了一个货物运输的实例,最初需求包括三个功能:

       ·跟踪货物主要处理

       ·事先预约货物

       ·货物到达处理过程中某个位置时,自动发送客户发票

对此的设计模型中可以分为以下几个对象:

(1)Handling Event 处理事件 (2)Delivery Specification 运送规格 (3)Customer (4)Carrier Movement (5)Delivery History 运送历史

7.2 隔离领域:引入应用层

     在此为了防止领域职责与系统的其他部分混杂在一起,我们分为三个应用层类:

(1)跟踪查询类 (2)预定应用类  (3)事件日志应用类

这些类属于协调者,不做回答,只负责提问,回答属于领域层的工作

7.3 将ENTITY和Value Object 区别开

(1)Customer :每个Customer在第一次联系销售时,分配一个ID号,作为标识。

(2)Cargo:两个完全相同的货箱也要分开,所以需要分配一个跟踪ID,且自动生成并且对用户可见。

(3)Handing Event 和 Carrier Movent:跟踪正在发生的货物运输,要实现处理事件有一种唯一识别的方法,那就是使CargoID、完成时间和类型的组合。

(4)Location:库位位置,我们可以使用具体经纬位置来作为唯一键。

(5)Delivery History:运输历史源于货物,展示货物的输送日志,它没有自身的标识,源于它所表征的货物。

(6)Delivery Specification :作为一个Value Object.

7.4 设计运输领域中的关联

这里重点说的就是模型的循环引用:货物存在输送历史,历史产生保存了一系列事件,每个事件都是绑定货物,形成一个闭环。

7.5 AGGREGATE边界

限定边界把跟货物相关的事物都包含进去,Handing Event 是它自己的AGGREGATE的根。

7.6 选择REPOSITORY

我们需要根据应用程序的需求,来确定各实体确实需要那些Repository.

7.9 重构

为了使设计更为理想化,对现有代码保证原有功能的基础上进行重新设计。本节举例查询运输历史,如果被频繁使用查询,提高性能的基础上我们对代码进行重构,查询直接返回相关的处理事件,这样会使查询变得更加容易。

总结

模型设计在最初需求确定以后,必将是一个不断优化的过程,随着需求的不断扩展,要从模型设计、对象设计、关联关系、后期优化(重构)等多方面不断深层次的考虑优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值