建立的网站百度搜索不到友情链接发布

diannao/2026/1/24 9:37:22/文章来源:
建立的网站百度搜索不到,友情链接发布,教你做cpa单页网站,wordpress 播客网站Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视#xff0c;是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性#xff0c;例如他在书中总结了模型在领域驱动设计中的作用包括#xff1a; 模型和设计的核心互相影响模型是团队所有成…Eric Evans 的领域驱动设计是对软件设计领域的一次重新审视是在面向对象语言大行其道时对数据建模的“拨乱反正”。Eric 强调了模型的重要性例如他在书中总结了模型在领域驱动设计中的作用包括 模型和设计的核心互相影响模型是团队所有成员使用的统一语言的中枢模型是浓缩的知识 显然模型在领域驱动设计中是设计的起点和关键。但是该如何才能得到我们心目中能够准确表达业务需求的模型呢 我们需要认识到模型和领域模型是两个不同层次的概念。如前所述模型还可以是数据模型或服务模型这取决于我们观察现实世界业务需求的视角。因此领域模型是以“领域”为关注核心的模型是对领域知识严格的组织且有选择的抽象。 领域模型的特征与分类 即便有了这个定义却没有清晰地说明领域模型到底长什么样子。领域模型究竟是什么呢是使用建模工具绘制出来的 UML 图是通过编程语言实现的代码或者干脆就是一个完整的书面设计文档 我认为UML 图、代码与文档仅仅是表达领域模型的一种载体而已如果绘制出来的 UML 图或者编写的代码与文档并没有传递领域知识那就不是领域模型。 因此领域模型应该具备以下特征 运用了统一语言来表达领域中的概念蕴含了业务活动和规则等领域知识对领域知识进行了适度的提炼和抽象它的建立是一个迭代的演进的过程能够有助于业务人员与技术人员的交流 既然如此不管领域模型的表现形式只要它正确地传递了领域知识并有助于业务人员与技术人员的交流就可以说是领域模型。这是一个更不容易犯错误的定义。它其实体现的是一种建模原则。很可惜这样高屋建瓴的原则并不能指导开发团队运用领域驱动设计。就好似软件设计有个核心原则是“高内聚低耦合”然而知道这个原则并不能保证你设计出高内聚低耦合的方案。故而诸如这样打太极似的原则与模糊定义并不能让开发团队满意他们还是会执着地追问领域模型到底是什么 Eric 并没有就此作出正面地解答但是他在模型驱动设计中提到了模型与程序设计之间的关系 “模型驱动设计不再将分析模型和程序设计分离开而是寻求一种能够满足这两方面需求的单一模型。” 这句话说明分析模型和程序设计应该一起被放入到同一个模型中。这个单一模型就是“领域模型”。他反复强调程序设计与程序实现应该忠实地反映领域模型他写道 “软件系统各个部分的设计应该忠实地反映领域模型以便体现出这二者之间的明确对应关系。” 同时他还要求 “从模型中获取用于程序设计和基本职责分配的术语。让程序代码成为模型的表达。” 在我看来设计对领域模型的反映就是“领域设计模型”代码对领域模型的表达就是“领域实现模型”。领域分析模型、领域设计模型与领域实现模型在领域视角下成为了领域模型中相互引用和参考的不可或缺的组成部分它们分别是分析建模活动、设计建模活动与实现建模活动的产物。 模型驱动设计非常强调模型的一致性Eric Evans 甚至认为 “将分析、建模、设计和编程工作过度分离会对模型驱动设计产生不良影响。” 这正是我将分析、设计和实现都统一到模型驱动设计中的原因。因此倘若我们围绕着“领域”为核心进行设计采用的就是领域模型驱动设计整个领域模型就应该包含领域分析模型、领域设计模型和领域实现模型 如何表现领域模型 因为交流的目标对象不同不同的领域模型会有不同的表现形式。文档描述、UML 图与实现代码是最为常见的模型表现形式。但是这些表现形式仅仅是对领域建模结果的一种呈现。领域模型的目的在于交流因此更好的方式是引入直观而又具备协作能力的可视化手段引导领域专家和开发团队参与到领域建模的整个活动中来而不是由专职的分析师或设计师使用冷冰冰的建模工具绘制 UML 图。通过使用各种颜色的便利贴、马克笔与白板纸等可视化工具让彩色的领域模型成为一种沟通交流的视觉工具。领域模型中的领域概念、协作关系皆生动形象地活跃在彩色图形上使得团队协作成为可能让领域模型更加直观从而避免沟通上的误差与分歧使得团队能够迅速就领域模型达成一致。 例如在运用用例图分析业务逻辑时就可以用黄色便利贴代表参与者蓝色便利贴代表主用例绿色便利贴代表包含用例与扩展用例。便利贴可以在白板纸上自由移动便于团队的协作和交流 事件风暴更是将这种可视化手段用到了极致沿着一条时间线通过对事件、命令、读模型Read Model、流程、策略Policy的不断识别领域专家与开发团队一起探寻业务的真相绘制出表现业务流程与领域模型的设计画布 职责驱动设计使用时序图来体现对象之间的协作关系。同样我们可以用即时贴表达参与协作的对象在白板上绘制出协作的时序图。如下图所示我使用不同的颜色表达远程服务、应用服务、领域服务、资源库和聚合 图中的红色五角星表达一个业务场景只需一个对外公开的接口。多数情况下这个对外公开的接口就是远程服务。在时序图上对象之间以箭头表达消息的传递。红色箭头指向的对象会履行该消息代表的职责例如 exists() 职责就由该红色箭头指向的 TrainingRepository 对象承担。一个对象如有太多红色箭头指向它就说明该对象可能承担了太多职责属于设计的坏味道。同时我们也需要注意发起消息箭头的对象它通常代表某个方法的调用者。如果发出了太多消息说明调用逻辑变得过于复杂缺少必要的封装层次同样属于设计的坏味道。图中绘制的蓝色圆圈代表了应用服务发出的调用消息。由于领域驱动设计不允许将业务逻辑封装到应用服务因此在一个时序图中应该只能有一个蓝色圆圈。 时序图自身的可视化特征可以直观地体现职责分配是否平衡。例如针对一个业务场景绘制的时序图如果过宽则说明对象的粒度可能太细增加了不必要的抽象与间接导致协作复杂度增加如果时序图过窄而高又可能说明对象的粒度可能太粗协作仅在有限的几个对象之间完成没有做到职责的分治。因此这些可视化特征都能够传递信号直观地呈现“设计坏味道”以便于我们对其进行修改和调整。 领域建模的结果固然比过程重要但如果缺乏高效沟通的建模手段或许我们根本无法获得正确的领域模型。显然可视化的表现形式与工作坊的沟通方式可以帮助我们在沟通交流时走出“盲人摸象”的窘境在团队中传递知识进而对整个业务系统的领域逻辑达成共识最终形成领域分析模型与领域设计模型。 至于领域实现模型则可以通过协作编写测试开始。测试用例体现了具体的业务场景测试方法的命名更加接近自然语言Given-When-Then 模式与业务场景的描述非常契合这就使得领域专家与开发人员结对编程成为了可能。如上一课给出的转账业务场景的测试方法完全可以是这种协作的产物。在针对业务场景进行测试驱动开发时可以让开发人员将注意力完全放在业务逻辑的实现上。由于代码仅仅是业务逻辑的表达领域专家就有能力参与进来帮助开发人员打磨代码使得代码的编写满足统一语言的要求。代码即模型这是领域模型最理想的表现形式也是领域建模最终的模型产物。 领域模型与统一语言的关系 领域模型之所以被划分为三个模型源于不同活动中的交流对象与交流重心各不相同。在分析建模活动中开发团队与领域专家一起工作通过建立更加准确而简洁的分析模型直观地传递着不同角色对业务知识的理解。在设计建模活动中必须基于领域分析模型对模型中的对象做出设计改进考虑职责的合理分配与良好的协作建立具有指导意义的设计模型。在实现建模活动中代码必须是领域设计模型的忠实表现意味着它其实也忠实表现了领域分析模型蕴含的领域知识。一言以蔽之让领域分析模型服务于开发团队与领域专家领域设计模型服务于软件设计人员领域代码模型服务于程序员。三个模型各司其职各取所需它们又都属于领域模型。 在建模过程中我们需要不断地从“统一语言”中汲取建模的营养并通过“统一语言”来维护模型的一致性。当开发团队根据领域分析模型建立领域设计模型时如果发现领域分析模型中的概念未能准确表达领域知识又或者缺少了隐式概念就需要调整领域分析模型使得领域设计模型与领域分析模型保持一致。领域实现模型亦当如此。显然统一语言为领域模型驱动设计提供了一致的领域概念使得领域模型在整个软件开发阶段保持了同步 迭代建模 分析、设计与实现不是割裂开的三个阶段而是一个迭代建模Iteration Modeling过程中的三个建模活动。在战略设计阶段我们可以通过业务场景识别系统的限界上下文。无论是采用用例场景分析还是事件风暴对限界上下文展开识别都可以认为是一个自底向上的建模过程。在获得限界上下文的同时我们也获得了相对细化的用例或主故事与初步的领域分析模型。为了避免分析瘫痪Analysis Paralysis应将这个过程控制在两周到一个月左右的先启Inception阶段完成。 先启阶段结束后就应该进入针对限界上下文开展领域模型驱动设计的迭代开发。在迭代开发过程中我们可以根据用户故事结合分析模式与四色建模等手段进一步细化领域分析模型然后结合设计模式与设计要素引入职责驱动设计获得领域设计模型最后结合业务场景与设计模型推进测试驱动开发实践进行编码开发以小步快速的“红—绿—重构”反馈环不断地改进代码质量和增量开发快速交付高价值的可运行的功能 说明迭代建模与本图参考了 Scott W. Ambler 敏捷建模的思想参见链接 http://agilemodeling.com/essays/iterationModeling.htm 迭代建模与迭代的增量开发一脉相承。它避免了在建模过程尤其是分析建模活动中的分析瘫痪也避免了在设计建模活动中的过度设计同时还能通过增量快速地开发出新功能来及时获得反馈。获得的领域模型也随着增量开发而不断演化并始终指导着设计与开发。迭代建模使得建模活动成为迭代开发中不可缺少的一个重要环节但整个活动却是轻量的有效地促进了团队成员的交流符合 Kent Beck 提出的核心价值观——沟通、简单和灵活。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

直播网站开发价格简述网站栏目管理

(1)右击“我的电脑”,选择“管理”选项,之后选择“磁盘管理”,查看自己U盘的索引,如:Disk 1(2)在运行窗口,输入cmd,回车,出现Dos运行环…

黄岩网站建设蛋糕网站模板

vs2015之后官网就不提供离线安装包了,使用离线安装包就需要自己手动制作一个; 以vs2019为例: 先去官网下载在线安装器 官网下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com) 展开2019的标签…

宁波外贸公司有哪些站长工具seo综合查询怎么用

本文经原作者授权以原创方式二次分享,欢迎转载、分享。原文作者:唐宋元明清原文地址: https://www.cnblogs.com/kybs0/p/16478587.htmlC# 获取系统已安装的.NET版本获取系统已安装的.NET版本,来确定当前应用可运行的环境。获取系…

禅城网站开发济宁专业建网站

相关阅读 CUDA Chttps://blog.csdn.net/weixin_45791458/category_12530616.html?spm1001.2014.3001.5482 第一百篇博客,写点不一样的。 当核函数在主机端被调用时,它会被转移到设备端执行,此时设备会根据核函数的调用格式产生对应的线程(…

搭建网站价格仪陇建设局网站

手动修改7zip图标理论知识制作ico图标文件替换资源重建图标缓存效果图替换文件7-Zip的自带图标是公认的丑,所以网上有很多7-Zip的图标美化工具,用的最多的就是 7-Zip Theme Manager,自带很多主题,但是最近我再使用7zTM修改图标是却…

毕业设计网站开发做网站宁夏

以太网报文格式:IP 报文格式:UDP 报文格式:校验和函数:/*******************************************************功能:校验和函数参数:buf: 需要校验数据的首地址nword: 需要校验数据长度的一半返回值&am…

建站魔方极速网站建设三亚房产网站建设

结构 struct 结构是使用struct关键字定义的 结构与类相似,但有两大区别: 1.结构属于值类型,而类属于引用类型; 2.结构是隐式密封的,也就是不可继承的,而一般的类不是隐式密封的. 其他区别: 3.结构中不能再定义无参数构造函数或析构函数,而类中可以 4.结构中普通字段不能直接赋值…

网站备案幕布可以ps么淘宝网页设计与制作教程

本文涉及知识点 贪心 回溯 字符串 LeetCode2014. 重复 K 次的最长子序列 给你一个长度为 n 的字符串 s ,和一个整数 k 。请你找出字符串 s 中 重复 k 次的 最长子序列 。 子序列 是由其他字符串删除某些(或不删除)字符派生而来的一个字符串…

哪个网站做动图重庆免费微网站

第85套: 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除&#xf…

网站开发职位介绍宁波建设网站公司

作者 | 侯淼淼 出品 | 《新程序员》当人们提及“程序员”这一职业的时候,大多数人的第一想法往往是高薪。然而近年来,随着造车势力的兴起,新一轮的高薪岗位抢人大战正式打响。2021年以来,一汽、东风等传统车厂招聘岗位数量持…

太平洋网站开发做自行车车队网站的名字大全

10 月 5 日凌晨,Vue.js 框架的作者兼核心开发者尤雨溪公布了尚处于 Pre-Alpha 状态的 Vue 3 源码。说学不动的童鞋抓紧剩余的假期时间撸一遍源码吧 : D作者表示,Vue 3 主要的架构改进、优化和新功能均已完成,剩下的主要任务是完成一些 Vue 2 …

个人网站创建平台广元市城乡规划建设监察大队网站

近年来,CTV(联网电视)在数字营销界正迅速崛起,成为最受青睐和增长迅猛的推广形式之一。 随着更多联网设备的普及,越来越多观众正在从传统电视快速转移到流媒体环境,对传统电视广告取而代之的便是 CTV 广告。据 eMarketer 数据显示,未来四年,CTV 市值将从今年的 250 亿美元增长到…

东营网站设计制作遵义市和城乡建设局网站

每天学习一个Linux命令之passwd 简介 passwd是Linux下用于修改用户密码的命令。它允许系统管理员或用户修改自己的密码,提供了很多选项以满足不同的需求。 命令选项 passwd命令有以下可用选项: -a:显示密码的更改时间和上一次更改密码的…

秦皇岛哪里做网站深圳十佳工业设计公司有哪些

xodr的geoReference标签介绍 经纬度投影 xodr文件projlatlong&#xff0c;说明需要使用经纬度投影代表x,y,z <geoReference>projlatlong ellpsWGS84 datumWGS84</geoReference>xodr文件projtmerc&#xff0c;说明需要使用横轴墨卡托投影(将经纬度投影转为墨卡托投…

快站怎么搭建淘客链接无锡软件网站开发公司

前言 过完年了&#xff0c;准备实习的你是已经在实习了&#xff0c;还是已经辞职回家过年&#xff0c;准备年后重新找工作呢&#xff0c;又或者是准备2021年春招&#xff1f; 那么还没没踏出校门或者是刚出校门没多久的同学们该如何准备前端校招的面试呢&#xff1f; 学习路线…

鄞州网站建设公司做好公司网站

vue3官方文档&#xff1a;Vue3 vue3创建应用实例 creatApp(根组件) vue3挂载全局组件、router、store use() 简介OptionsAPI与CompositionAPI的区别 1、OptionsAPI数据、方法、计算属性等&#xff0c;是分散在data、methods、computed中的&#xff0c;若想新增或者修改一…

苏州网站建设找哪家上海app开发推荐中伟科

当我们开始着手写一本Asterisk书的时候&#xff08;大概五年前&#xff09;&#xff0c;我们确信Asterisk将会从根本上改变通讯行业。今天&#xff0c;我们预言的这场革命几乎就要完成了。Asterisk现在是世界上最成功的PBX&#xff0c;并且是通讯行业的公认技术&#xff08;尽管…

电商平台网站开发过程是什么域名展示网站源码

Linux 下安装 Git 1 参考2 安装2.1 通过 yum方式安装&#xff08;不推荐&#xff09;2.2 通过源码编译安装&#xff08;推荐&#xff09; 3 配置SSH 1 参考 Linux 下安装 Git 2 安装 2.1 通过 yum方式安装&#xff08;不推荐&#xff09; 在Linux上安装git仅需一行命令即可…

建网站的宽带多少钱医院建设官方网站必要性

相信各位在进行uni-app开发的时候会遇到各种关于异步回调问题&#xff0c;例如要传code给后端以换取session_key&#xff0c;在这之前需要先调用 uni.login&#xff0c;所以执行的顺序是必须同步等待的。在写这篇文章之前对于整体的流程概念需要做一个梳理&#xff0c;以便能更…

wordpress插件配置文件东莞营销网站建设优化

第一个程序就遇到这么恶心的bug&#xff0c;也查了很多类似的问题是什么情况&#xff0c;后来无意中菜解决了这个bug&#xff0c;确实也是devicps下面加一个参数&#xff0c;但是找了半天 这是我遇到这个问题的解决办法。其他解决办法如下&#xff1a; https://blog.51cto.com…