范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

面试官谈一下你对DDD的理解?我马什么梅?

  领域模型(domain model)是对领域内的概念类或现实世界中对象的可视化表示。领域模型也称为概念模型、领域对象模型和分析对象模型。
  ——《UML和模式应用》
  我们在日常开发中,经常针对一些功能点争论"这个功能不应该我改,应该是你那边改",最终被妥协改了之后都改不明白为什么这个功能要在自己这边改。区别于传统的架构设计,领域驱动设计(DDD)也许在这个时候能帮助你做到清晰的划分。什么是DDD
  领域驱动设计最初由Eric Evans提出,但是多年以来一直停留在理念阶段,真正能实现并且落地的项目和公司少之又少,而进来阿里内部其实在大力推行DDD的理念,它主要可以帮助我们解决传统单体式集中架构难以快速响应业务需求落地的问题,并且针对中台和微服务盛行的场景做出指导。
  DDD为我们提供的是架构设计的方法论,既面向技术也面向业务,从业务的角度来把握设计方案。DDD的作用
  统一思想:统一项目各方业务、产品、开发对问题的认知,而不是开发和产品统一,业务又和产品统一从而产生分歧。
  明确分工:域模型需要明确定义来解决方方面面的问题,而针对这些问题则形成了团队分钟的理解。
  反映变化:需求是不断变化的,因此我们的模型也是在不断的变化的。领域模型则可以真实的反映这些变化。
  边界分离:领域模型与数据模型分离,用领域模型来界定哪些需求在什么地方实现,保持结构清晰。DDD的概念
  实体
  有唯一标志的核心领域对象,且这个标志在整个软件生命周期中都不会发生变化。这个概念和我们平时软件模型中和数据库打交道的Model实例比较接近,唯一不同的是DDD中这些实体会包含与该实体相关的业务逻辑,它是操作行为的载体。
  值对象
  依附于实体存在,通过对象属性来识别的对象,它将一些相关的实体属性打包在一起处理,形成一个新的对象。
  举个栗子:比如用户实体,包含用户名、密码、年龄、地址,地址又包含省市区等属性,而将省市区这些属性打包成一个属性集合就是值对象。
  聚合
  实体和值对象表现的是个体的能力,而我们的业务逻辑往往很复杂,依赖个体是无法完成的,这时候就需要多个实体和值对象一起协同工作,而这个协同的组织就是聚合。聚合是数据修改和持久化的基本单元,同一个聚合内要保证事务的一致性,所以在设计的时候要保证聚合的设计拆分到最小化以保证效率和性能。
  聚合根
  也叫做根实体,一个特殊的实体,它是聚合的管理者,代表聚合的入口,抓住聚合根可以抓住整个聚合。
  领域服务
  有些领域的操作是一些动词,并不能简单的把他们归类到某个实体或者值对象中。这样的行为从领域中识别出来之后应该将它声明成一个服务,它的作用仅仅是为领域提供相应的功能。
  领域事件
  在特定的领域由用户动作触发,表示发生在过去的事件。比如充值成功、充值失败的事件。四种模式
  失血模型
  模型中只有简单的get set方法,是对一个实体最简单的封装,其他所有的业务行为由服务类来完成。@Data @ToString public class User {     private Long id;     private String username;     private String password;     private Integer status;     private Date createdAt;     private Date updatedAt;     private Integer isDeleted; }public class UserService{     public boolean isActive(User user){         return user.getStatus().equals(StatusEnum.ACTIVE.getCode());     } }
  贫血模型
  在失血模型基础之上聚合了业务领域行为,领域对象的状态变化停留在内存层面,不关心数据持久化。@Data @ToString public class User {     private Long id;     private String username;     private String password;     private Integer status;     private Date createdAt;     private Date updatedAt;     private Integer isDeleted;          public boolean isActive(User user){         return user.getStatus().equals(StatusEnum.ACTIVE.getCode());     }          public void setUsername(String username){         return username.trim();     } }
  充血模型
  在贫血模型基础上,负责数据的持久化。@Data @ToString public class User {     private Long id;     private String username;     private String password;     private Integer status;     private Date createdAt;     private Date updatedAt;     private Integer isDeleted;          private UserRepository userRepository;          public boolean isActive(User user){         return user.getStatus().equals(StatusEnum.ACTIVE.getCode());     }          public void setUsername(String username){         this.username = username.trim();         userRepository.update(user);     } }
  胀血模型
  service都不需要,所有的业务逻辑、数据存储都放到一个类中。
  对于DDD来说,失血和胀血都是不合适的,失血太轻量没有聚合,胀血那是初学者才这样写代码。那么充血模型和贫血模型该怎么选择?充血模型依赖repository接口,与数据存储紧密相关,有破坏程序稳定性的风险。建模方法
  用例分析法
  用例分析法是领域建模最简单可行的方式。大致可以分为获取用例、收集实体、添加关联、添加属性、模型精化几个步骤。获取用例:提取领域规则描述收集实体:定位实体,添加关联:两个实体间用动词关联起来添加属性:获取实体属性模型精化:可选的步骤,可以用UML的泛华和组合来表达模型间的关系,同时可以做子领域的划分
  四色建模法
  四色建模法源于《Java Modeling In Color With UML》,它是一种模型的分析和设计方法,通过把所有模型分为四种类型,帮助模型做到清晰、可追溯。
  简单来说,四色关注的是某个人的角色在某个地点的角色用某个东西的角色做了某件事情。
  事件风暴法
  事件风暴法类似头脑风暴,简单来说就是谁在何时基于什么做了什么,产生了什么,影响了什么事情。
  架构分层
  区别于左图传统架构的分层,一般DDD分层会有一些变化。
  Application:包含事件注册、业务逻辑等
  Domain:聚合、实体、值对象
  InfraStructure:基础设施封装、数据库访问等
  总结
  DDD是一套完善的方法论,他能帮助我们合理的对系统进行架构设计,同时,好的模板应该是在不断的适应变化,而DDD也能帮助我们更快速更方便的支撑业务的发展。

被误会是混血儿的7位明星,个个眉眼深邃,贵气且有辨识度说到混血儿,好像就是漂亮和帅气的代名词了。娱乐圈里的混血明星不少,像吴彦祖金城武立威廉张柏芝李嘉欣钟丽缇等,都是帅的帅,美的美,个个堪称颜霸。但也有一些明星,明明不是混血儿,却也常承包90后电视剧的童年女神们,即使退圈了也令人念念不忘写写娱乐圈那些事儿,感兴趣的可以点个关注哦!01郭珍霓鲜少有主角戏的郭珍霓,却也靠无数配角撑起了90后童年的半壁江山。郭珍霓五官虽谈不上十分精致,但是骨相和身材比例都很好,典型的古同样是杨受成的基因,把杨其龙杨政龙一对比,差距就出来了77岁那年,杨受成有了第二个孙女。和当年的大儿子杨其龙一样,他的同父异母的弟弟杨政龙,2020年诞下的闺女,也是未婚先孕的模式。外界都说,有其父必有其子,这两个儿子都是得到了他们老朱珠连续10年入选世界百美,37岁结婚生子,她在追求什么?文文刀贰说起京圈公主,观众大概率会想到韩雪。但在偌大的娱乐圈中,还有一位将门之后,那便是朱珠。不管是家世学识,还是外貌,朱珠的优秀全部榜上有名。出生便自带光环的她,不管是事业还是爱离婚三个月后,Angelababy恋情曝光,震惊全网眼光这么差01hr今天凌晨,Angelababy与另外一位男性演员林一先后登上娱乐热搜榜,一时间引发众多网友的热议。据媒体报道称,有网友爆料Angelababy和一位神秘男子一同现身重庆某网离婚不到3个月,再看吴倩与张雨剑的境遇,事业发展一个天一个地2月14日情人节,娱乐圈却又爆出了大瓜。去年隐婚生子的吴倩,在网上发了一张和女儿的照片,同时配文单身姑娘们的情人节约会,网友们瞬间就get到了吴倩的意思,随后,吴倩的工作室也表示吴他曾与成龙齐肩,却因爱国而被雪藏,周星驰多次邀请才复出近日,知名的动作演员梁小龙在网络社交平台个人账号上分享了一段与徒弟一起练武的短视频,引来众多网友的围观。且不说梁小龙与徒弟之间的对打令人看得热血沸腾,仅今年已经74岁的他还是神采奕乔羽他写的歌大家都会唱,为何能与初恋妻子相守68年?点击关注,每天都有名人故事感动您!乔羽乔羽是德高望重的著名词作家,他创作的让我们荡起双桨人说山西好风光我的祖国爱我中华难忘今宵思念牡丹之歌夕阳红等歌曲,影响了一代又一代人,成为永恒任嘉伦谭松韵有望二搭,新剧江山为聘提上日程,期待值爆棚近日,任嘉伦主演的与君初相识正在热播,谭松韵主演的请叫我总监也已经定档,对于观众来说可是双喜临门。相信有不少网友都看过任嘉伦和谭松韵主演的锦衣之下,这部剧可谓是2019年的大爆剧,壕无人性的8名女星有钱也养不起,她们的高消费你想都不敢想苏芒曾在一档节目中抱怨道,一天650的伙食费太少了,每天早上得吃点鸡蛋和牛奶补充身体吧,650怎么能够呢?我们要吃好一点,我不能有这么差的伙食!节目一出,有关650一天的伙食费够不盘点古装剧中的黑衣男神总有一款能够征服你的心翩翩少年,俊逸出尘,眉眼如虹,清冷玉立,英俊潇洒,魅人心魄,公子如玉,遗世独立。古装剧中最经典的造型莫过于白衣或者黑衣,而黑色系服饰往往是人物角色黑化或心境发生转变的象征,前几天为
诗词大会上文学教授康震老师现场发挥能写会画,有人却认为他文化水平一流书画水平一般,你怎么看?金无足赤,人无全才。纵李白大诗人吧,琴棋书画诗酒茶,古代才子标配,也没听说过李白会画画,如今这七件才艺,更有几人都玩转了?历史上诗书画皆绝的,也寥寥无几。康震文学教授点,中国诗词大头文字D主演多年后同框余文乐周杰伦罕见聚首昨天,周杰伦发布了一张照片,照片中是和朋友们一起聚会,其中有昆凌,余文乐,刘畊宏等人,大家看到这张照片感慨,多年前的头文字D主演聚首了,不得不感慨时间过的太快,现在两人都已经是爸爸5个版本的碧血剑你喜欢哪个?碧血剑是当代作家金庸创作的长篇武侠小说,发表于1956年,收录在金庸作品集中。这些年,我们好像很久没有听到过这部剧的消息了,让我们来回忆一下。故事简介碧血剑的主线故事是明末被冤杀的王思聪16岁才知家里有钱,开始我不信,当看到这几张照片后信了说到王思聪我们都万分的熟悉,不仅是因为他有钱更重要的是这个人很有个性,之前很多人都看不惯他那种桀骜不驯的样子,但是近两年他也变得内敛了很多。可能是因为年龄的增长成熟了,也或许是因为这部剧终于定档了,昊然弟弟演技炸裂,光看片花就燃爆了如今,古装剧都喜欢拍摄大男主戏或者大女主戏,以一个主角的成长故事为基础,讲述一个时期或一个王朝的故事。这些电视剧情节大多很励志,情节内容也很抢眼,如未播出就万受瞩目的电视剧九州缥缈潘越云被韩国瑜暗恋?她亲揭真相!黄仲昆笑韩冰是无缘女儿记者卢薇凌台北报导ICRT欢庆40岁生日,由齐豫潘越云黄仲昆等14位歌手和Action等6个合唱团,将于7月13日举办ICRT40周年暨青春旋律西洋流行音乐演唱会。记者会5日举行,小花远赴国外豪商局?张一山不管家?高圆圆怀孕了?吴映洁新戏?小婊贝们,晚上好!烧脑时间开始,交白卷的小婊贝们,可以围观一下评论啊,真相帝往往就隐藏在其中!娱乐圈好些拉皮条的饭局,其实都少在国内办了,都怕被查水表,影响事业。好些圈内的皮条客,飞驰人生中,沈腾一脚油门,发动机爆了,现实生活中是不是也会猛的油门造成发动机爆炸?现实生活中不会出现这种情况,转速过高的时候你会听到发动机声音哄哄响,特别大,一般发动机你挂空挡踩油门到底,转速到了红线就上不去了,跟发动机自身最初的设计有关系,长期维持在红线以上转被生活盘得珠圆玉润的潘粤明掌柜的说2016年,唐人街探案1惊艳问世,一向以白面小生的姿态行走江湖的潘粤明,在沉寂几年后突然以一个市井糙汉的形象闯入大众视野。肥胖阴郁内敛变态。记得当时一位同行看完电影和我讨论黄晓明baby世纪婚礼,吴奇隆不抠,他俩结婚花了却不到1万七什么时候可以看见娱乐圈的各位大佬们欢聚一堂,除了各种商业活动或者是年底盛会,就是明星们的婚礼了。明星结婚,尤其是双方都是圈里人的时候,一双璧人,郎才女貌,但是可能大部分大家看的都是知名画家涉嫌抄袭长达30年花高价买他画的人怎么办?继娱乐圈掀起打假之风后,艺术圈也开始打假了艺术家叶永青被指涉嫌抄袭。但在这次事件中,最先受伤的却并非当事艺术家新京报微博截图持续发酵的艺术抄袭近日,比利时艺术家克里斯蒂安希尔文(C