领域驱动设计——精炼
admin
2024-02-03 19:23:03
0

一、什么是精炼

一般都知道,做一个大型设计甚至一个超大型设计(虽然一般人无法经历,但做一个稍大些的设计一对比就会有所明白),从中准确抓住核心领域是非常困难的。即使是通过某种手段确定了核心领域后,核心领域的复杂性仍然是让众多人感到无所适从。这正如寻找铁矿,找到就很困难,找到后开采同样是一个复杂的问题。而把开采后的铁矿石提炼是全世界一种通行的做法。同样,这个道理也适应于领域驱动,领域的复杂性要求人们不得不对其进行精炼。
什么是精炼?“精炼是把一堆混杂在一起的组件分开的过程,以便通过某种形式从中提取出最 重要的内容,而这种形式将使它更有价值,也更有用。模型就是知识的精炼。通过 每次重构所得到的更深层的理解,我们得以把关键的领域知识和优先级提取出来。”其实再次一个更形象的例子,日常女孩子们喜欢的金首饰,就分纯金,足金,千足金,万足金。可能对大多数物品精炼到一定程度就没有更多的意义了。但是对于某些特定物品,当精炼到某种程序后,就出现了神奇的物理现象,这些是精炼的意义所在。
根据实际情况,是精炼到一定的程度就停止(比如程序的稳定性,到几个九就可以了),还是不断的精炼下去,达到质变的一个临界点。

二、精炼的内容和步骤

精炼的主要内容包括以下几点:
1、帮助所有团队成员掌握系统的总体设计以及各部分如何协调工作
2、找到一个具有适度规模的核心模型并把它添加到通用语言中,从而促进沟 通
3、指导重构
4、专注于模型中最有价值的那部分
5、指导外包、现成组件的使用以及任务委派。
那么精炼是如何进行的呢?一般来说分为以下几步:
1、编写DOMAIN VISION STATEMENT(领域愿景说明)和HIGHLIGHTED CORE(突出核心)
2、分离通用子领域
3、重新打包SEGREGATED CORE
4、ABSTRACT CORE(抽象内核),用纯粹的形式表示了最基本的概念和关系
这些方法步骤并不是要求按顺序进行的,它们对整个精炼起到的作用和需要付出的代价也各有不同,大家可以在实际情况中根据需求来结合使用。

三、精炼的模式

精炼有以下几种模式,可能通过这些模式来对精炼进行把控:
1、CORE DOMAIN(核心领域)
这个其实非常容易理解,就是抓住重点,抓住核心。在面对需求时,无论是设计模型还是设计架构,都会有一个让设计者头痛的事,那就是从哪入手,解决什么?用什么解决?先后顺序重点在哪儿?所以说,最核心的领域往往会被一些表面强烈的需求给掩盖。所以更要从领域视图的整体来分析,达到人尽其用,资源匹配。
因此,对模型的提炼是不可避免的。要通过某些具体的技术或者手段来找到CORE DOMAIN,这种精炼的过程是迭代的,设计得的认知可能也会不断的演进。一开始的认知可能会发生变化甚至相反。要保证让最优秀的人才来开发最核心的领域。
在此之后,需要选择核心,即重点针对那些能够表示业务领域并解决业务问题的模型部分。可以通过专业的开发人员和业务领域的专家共同来对此进行抽象分析,从而更加专注于核心领域。

2、GENERIC SUBDOMAIN
领域模型设计中,各种细节导致整个设计复杂性和难度不断提高。设计者往往在其面前舍本逐末,在一些非核的领域上耗费了大量的精力。
3、DOMAIN VISION STATEMENT
愿景描述,这个其实就是一个整体的沟通文档,“它关注的重点是领域 模型的本质,以及如何为企业带来价值。”这个文档要尽量精简,尽量兼顾各方的利益。它可以作为一个行动指南,帮助团队在精炼模型的过程中保持共同的方向。所以本模式就是要识别核心领域,并将其单独放到专门的模块中,将无关的细节和其它领域放到非优先级。
这里有一个重要的问题,通用并不意味着复用。要关注精炼的“基本动机——我们应该尽可能把大部分精力投入到CORE DOMAIN工作 中,而只在必要的时候才在支持性的GENERIC SUBDOMAIN中投入工作。”

4、HIGHLIGHTED CORE
这种模式是一种比较简单和轻量化的解决领域划分的手段。它不会引起剧烈的变化和对模型的改动。可以通过突出核心(HIGHLIGHTED CORE),来将文档精炼,只保留重要的细节,其它不相关的非Core领域和元素的交互细节全部删除。精炼文档需要团队密切合作,不断沟通完善。消除使用这种模式的问题即:
1)文档可能无法维护
2)文档可能无人阅读
3)文档可能教会法简化复杂性的目的。
5、COHESIVE MECHANISM
内聚机制,此机制最大的用途在于“用途最大的地方是它通过一个INTENTION-REVEALING INTERFACE来提供访问,并且具有概念上一致的ASSERTION和SIDE-EFFECT-FREE FUNCTION。利用这些MECHANISM和柔性设计,CORE DOMAIN可以使用有意义的声 明,而不必调用难懂的函数。但最不同寻常的回报来自于使CORE DOMAIN的一部分 产生突破,得到一个深层模型,而且这部分核心领域本身成为了一种语言,可以灵活且精确地表达出最重要的应用场景。”
在设计中往往通过封装来实现内聚,但封装有时候儿会导致设计的膨胀,为了包容万物,封装会不断的增加新的模块。那么可以使用内聚机制来实现对领域的重新划分。
GENERIC SUBDOMAIN与COHESIVE MECHANISM二者的动机相同,目的均是精简CORE DOMIN。前者是以描述性的模型作为基础的,它用这个模型表示出团队会如何看待领域的某个方面。后者并不表示领域,目的是解决描述性模型说提出来的一些复杂计算问题。
6、SEGREGATED CORE
分离领域的目的,其实就是更好的实现内聚性,减少同其它领域的交互,降低耦合性。分离领域,目的一定是找出最核心的领域,而不是盲目的去分离。只有找到最核心的领域,把其它相关的领域分离开来,才能更好的实现模型对领域的清晰的描述。
实现它有以下几个步骤:
1)找到一个CORE子领域
2)将相关类转移至新Model中并依此对这些类的相关概念命名模块
3)重构代码,分离不直接表示概念的数据和功能
4)迭代(对SEGREGATED CORE MODEL)进行重构,使其中的关系和交互变得简单、表达更清除
5)继续迭代其它的CORE子领域
使用这种模式要有代价的,可能会使某些核心领域的关系变得复杂和更难以明白,这就需要一些具体的取舍。

7、ABSTRACT CORE
抽象,就意味着可以依赖。而可以依赖,就意味着可以重用。所以,在精炼的过程中,繁杂的细节会干扰设计人员的思维,而把领域精简细小化,则更利用领域的认知和应用。但过多的领域往往又会造成其之间相互的交互的复杂性。这时,抽象就可以应用了,把这些小的领域抽象出基本的接口来,大家都依赖于这个接口,再辅助以各种类和模块来实现各种详细的功能,这样就可以更好的精炼相关的领域。

对整体上进行精炼后,可以继续向深层精炼推进,也就是对各个子领域或者关键领域继续进行精炼,不断的抽象使得元素变得更简单更容易组合使用。

四、总结

西方的炼金士为了寻找便宜获得黄金的方法花费了几个世纪来处理各种材料,其实用现代的眼光看就是混合精炼的过程。如今的软件设计和软件编程,其实就是类似这个过程的。现如今需求海量,各种单一解决问题的手段和方法,往往都不能起到决定性的效果,所以把各种技术领域有机结合在一起,才是解决问题的王道。当从设计的角度来看解决问题后的整体设计时,就可以回望到精炼的这个过程。学习和实践就是一个否定之否定的不断的演进的过程。

相关内容

热门资讯

电视安卓系统哪个品牌好,哪家品... 你有没有想过,家里的电视是不是该升级换代了呢?现在市面上电视品牌琳琅满目,各种操作系统也是让人眼花缭...
安卓会员管理系统怎么用,提升服... 你有没有想过,手机里那些你爱不释手的APP,背后其实有个强大的会员管理系统在默默支持呢?没错,就是那...
安卓系统软件使用技巧,解锁软件... 你有没有发现,用安卓手机的时候,总有一些小技巧能让你玩得更溜?别小看了这些小细节,它们可是能让你的手...
安卓系统提示音替换 你知道吗?手机里那个时不时响起的提示音,有时候真的能让人心情大好,有时候又让人抓狂不已。今天,就让我...
安卓开机不了系统更新 手机突然开不了机,系统更新还卡在那里,这可真是让人头疼的问题啊!你是不是也遇到了这种情况?别急,今天...
安卓系统中微信视频,安卓系统下... 你有没有发现,现在用手机聊天,视频通话简直成了标配!尤其是咱们安卓系统的小伙伴们,微信视频功能更是用...
安卓系统是服务器,服务器端的智... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅仅是个手机操作系统,竟然还能成为服务器的得...
pc电脑安卓系统下载软件,轻松... 你有没有想过,你的PC电脑上安装了安卓系统,是不是瞬间觉得世界都大不一样了呢?没错,就是那种“一机在...
电影院购票系统安卓,便捷观影新... 你有没有想过,在繁忙的生活中,一部好电影就像是一剂强心针,能瞬间让你放松心情?而我今天要和你分享的,...
安卓系统可以写程序? 你有没有想过,安卓系统竟然也能写程序呢?没错,你没听错!这个我们日常使用的智能手机操作系统,竟然有着...
安卓系统架构书籍推荐,权威书籍... 你有没有想过,想要深入了解安卓系统架构,却不知道从何下手?别急,今天我就要给你推荐几本超级实用的书籍...
安卓系统看到的炸弹,技术解析与... 安卓系统看到的炸弹——揭秘手机中的隐形威胁在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。...
鸿蒙系统有安卓文件,畅享多平台... 你知道吗?最近在科技圈里,有个大新闻可是闹得沸沸扬扬的,那就是鸿蒙系统竟然有了安卓文件!是不是觉得有...
宝马安卓车机系统切换,驾驭未来... 你有没有发现,现在的汽车越来越智能了?尤其是那些豪华品牌,比如宝马,它们的内饰里那个大屏幕,简直就像...
p30退回安卓系统 你有没有听说最近P30的用户们都在忙活一件大事?没错,就是他们的手机要退回安卓系统啦!这可不是一个简...
oppoa57安卓原生系统,原... 你有没有发现,最近OPPO A57这款手机在安卓原生系统上的表现真是让人眼前一亮呢?今天,就让我带你...
安卓系统输入法联想,安卓系统输... 你有没有发现,手机上的输入法真的是个神奇的小助手呢?尤其是安卓系统的输入法,简直就是智能生活的点睛之...
怎么进入安卓刷机系统,安卓刷机... 亲爱的手机控们,你是否曾对安卓手机的刷机系统充满好奇?想要解锁手机潜能,体验全新的系统魅力?别急,今...
安卓系统程序有病毒 你知道吗?在这个数字化时代,手机已经成了我们生活中不可或缺的好伙伴。但是,你知道吗?即使是安卓系统,...
奥迪中控安卓系统下载,畅享智能... 你有没有发现,现在汽车的中控系统越来越智能了?尤其是奥迪这种豪华品牌,他们的中控系统简直就是科技与艺...