WebService基础教程带实例08.领域模型驱动设计3_第1页
WebService基础教程带实例08.领域模型驱动设计3_第2页
WebService基础教程带实例08.领域模型驱动设计3_第3页
WebService基础教程带实例08.领域模型驱动设计3_第4页
WebService基础教程带实例08.领域模型驱动设计3_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于SOA 思想下的WebService 实战 讲师:Sean第08讲 领域模型驱动设计什么是领域驱动设计基本构成要素领域模型参考架构软件开发 反应真实世界要自动化的业务流程 或者可以用软件解决的现实问题Domain 特指软件关注的业务领域在不能充分理解业务领域的情况下,无法做出一个好的软件特定业务领域的知识特定业务领域的知识映映射射类,方法类,方法算法,模式算法,模式对象之间关系对象之间关系封装,继承,多态封装,继承,多态面向对象编程面向对象编程数据库,表,字段数据库,表,字段类库,框架类库,框架专业技能专业技能专业技能专业技能专业技能专业技能专业技能专业技能专业技能专业技能专业技能专业技能

2、专业技能专业技能用模型来交流用模型来交流领域专家领域专家软件专家软件专家采集业务名词采集业务名词-类类采集业务动词采集业务动词-方法方法表现形式多样表现形式多样(UML|文档文档|小图小图|代码代码)确保软件专家和领域专家能在一起能快速读懂并交流确保软件专家和领域专家能在一起能快速读懂并交流产生的交流结果能简单传达到给其他领域专家产生的交流结果能简单传达到给其他领域专家分层架构实体值对象服务模块聚合工厂资源库将领域模型相关的代码集中到一个层中,把它从用户界面、应用和基础设施代码中分隔开来释放领域对象的显示自己、保存自己、管理应用任务等职责,让它专注于展现领域模型复杂的程序切分成层层中采用内聚的

3、设计层仅依赖于它底下的那层有一类对象拥有唯一标识符能够跨越系统的生命周期甚至能超越软件系统的一系列的延续性和标识符这样的对象称为实体。对某个对象是什么不感兴趣,只关心它拥有的属性用来描述领域的特殊方面、且没有标识符的一个对象,叫做值对象能被简单的创建和丢弃,生命周期中不会被持久化值对象可以被共享,值对象应该不可变DTO枚举值枚举值自定义自定义异常异常临时对象临时对象领域中的一些动词,代表了领域中的一个重要的行为,却不属于任何对象 服务执行的操作涉及一个领域概念,这个领域概念通常不属于一个实体或者值对象 被执行的操作涉及到领域中的其他的对象 操作是无状态的服务对象不再拥有内置的状态服务对象担当重

4、要的协调功能银行转账银行转账将相关领域模型提炼分类,分而治之将高关联度的模型分组到一个模块以提供尽可能大的内聚(以能完整完成任务为准)分层是水平划分模块是垂直划分(Domain内部)所有权和边界创建存储聚合模式工厂模式资源库模式聚合是针对数据变化可以考虑成一个单元的一组相关的对象实体实体实体实体实体根对象外部调用增删改查值对象Copy操作根对象工厂封装复杂的对象创建过程(特别是聚合根对象)实体实体实体实体实体根对象外部调用工 厂设计模式参考实现:简单工厂工厂方法抽象工厂newFactory.build资源库的目的是封装所有获取对象引用所需的逻辑。领域对象不需处理基础设施,以得到领域中对其他对象

5、的所需的引用实体实体实体实体实体根对象外部调用资源库工厂关注的是对象的创建资源库关注的是已经存在的对象find基础设施selectbuild领域驱动设计(Domain Driven Design)有一个官方的sample工程,名为DDDSample官网:http:/ Services、RMI或Rest等在内的一种或多种通信接口该层主要由Facade、DTO和Assembler三类组件构成,三类组件均是典型的J2EE模式DTO- DataTransfer Object(数据传输对象),也常被称作VO-Value Object(值对象)DTO设计之初是为了将细粒度的领域对象包装为粗粒度的数据结构,

6、减少网络通信并简化调用接口减少网络流量简化远程对象和远程接口传输更多的数据减少远程调用次数避免将领域状态跨层次传递由于同步和版本控制增加了复杂性DTO与领域对象之间的相互转换工作多由Assembler承担因此Assembler几乎总是同DTO一起出现。装配工装配工实践Facade的过程中最难把握的问题就是Facade的粒度问题。传统的Service均以实体为单位进行组织,而Facade应该具有更粗粒度的组织依据,较为合适的粒度依据有:一个高度内聚的模块一个Facade或者是一个“聚合”(特指领域驱动设计)一个Facade.应用层负责驱动应用程序的工作流程,匹配对应的UseCase,由Inter

7、faces层通过同步或异步消息驱动这一层是适合生成交易,高等级日志logging和安全性应用层在领域逻辑中是很薄的一层,只负责协调领域层对象去执行实际的工作Service会与多种组件进行交互这些组件包括: 其他的Service 领域对象 Repository DAODomain层是整个系统的核心层,该层维护一个使用面向对象技术实现的领域模型,几乎全部的业务逻辑会在该层实现Domain层包含: Entity(实体) ValueObject(值对象) Domain Event(领域事件) Repository(仓储)等基础设施层nfrastructure为Interfaces、Application和Domain三层提供支撑所有与具体平台、框架相关的实现会在Infras

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论