在过去的一年中,我经常听到每个人在讨论DDD,我表达了他们的意见。
例如,在某个技术微信小组讨论中,有人说DDD是个头,以便进行性能(不跑步?),有人说他们是Crud Boy,我不知道什么DDD是。
接下来,我用一个大白话来表达我对DDD的看法。
现场设计角色
问:第一点不能设计?
答:您可以在没有现场设计的情况下进行设计。在项目的早期阶段,为了快速运营业务并产生价值,目前无法照顾设计的合理性。当项目未达到一定数量时,就无法预测当然,如果系统在开始时进行估算,则整个体系结构需要在早期阶段进行严格设计。
问:您什么时候需要使用它?
答:回到现状的第二点,当企业发展到一定量,业务的复杂性达到一定数量时,有必要使用现场设计进行转换。这次,您会发现重复复制大量代码,可扩展性差。每个新需求都会不断开发。目前,您需要翻新该领域。
问:第三点的原因是什么以及如何解决?
答:基本问题是,每种方法都会影响该实体的更新,从而产生很大的影响并且无法收集点。我们的解决方案是将所有这些更新收集到一种方法中,然后其他方法只会调用更改方法这样,我只需要监视方法!
仍然是一个大白话,即高度聚会,低耦合
PS:我已经看到很多人提出了很多理论。当然,该理论也是一件好事。它以这种方式组织起来。
但?最终学到的许多知识都是思想,逻辑和本质,而其他知识则是它的变化。这是相对的形而上学。顺便说一句,我的想法是:虚拟事物实际上是在指导方向。例如,公司的愿景,您能说它可以发挥作用吗?着陆时,不使用它,因此无法实施。
问:为什么需要收集高和低耦合?
我们可以查看现状的第三点。实际上,他的变化方法已经传播,这导致许多地方修改方法。因此,我们需要将这些方法绘制为一种方法。这是Gao Nei聚会。它在字段中具有什么功能?
问:什么是低耦合?
对于一个常见的示例,在逻辑 - > b逻辑之后,问题是,有一天我不需要B逻辑,我想更改C逻辑,但是B和C可以根据情况切换。
一些聪明的人站起来说:您可以使用策略模式。这是正确的,但是它的本质是低耦合。A不知道B,也不知道C的特定实现。它只知道接口,如何实现以及从适配器中,什么规则注入相应的实现类。
问:低耦合的好处是什么?
对于可伸缩性,当我使用其他中间件而无需使用某个中间件时,实际上,我只需要编写另一个适配器来解决此问题。如果代码与其他中间件耦合,则必须重写上一个代码。随着中间部分越来越多,代码的可读性将变得越来越糟。
?SOA的服务体系结构实际上是一个划分的想法。在服务中,将有与此业务领域相对应的相关操作,并具有相应的字段模型,字段对象,值对象,上下文,然后提供外部服务。本质
在宗泰的概念中,有一个大的前台,并且该字段的概念中有一个应用层。它的角色是什么?是一行。也就成为许多不同的服务来提供业务中的功能,这需要一个安排它们的地方。
问:前台的角色是什么?
在单个服务中,我们通常会在服务中写入。第三点就像现状。每种方法或每个服务都有一个安排任务。在这个工具中,要抽象并成为单独的服务。这是大前台
贫血模型仅具有属性,但其验证和方法属于其外部方法。单个原理的侵害,包装性相对较差
拥堵模型包括属性和相应的方法。效益,开放和关闭的原则,将来将在班级中添加新方法。如果它是在外部完成的,实际上是修改的,应减少
在许多企业中,我们面对该过程,例如方法(字符串,字符串)参数,他将在之前和之后的订单中订购,这意味着,如果我们将其封装为对象,则可以减少此类问题。
原则
这就是为什么有许多对象,聚合根,实体,实际上可以按照打开和关闭的原则来封装相应的类和相关方法
接口层,应用程序层,字段层,基本层
接口层:面向接口,控制器
应用属于该安排,即其他层封装它们各自的小型单位。他们执行的订单由应用程序层处理
应用程序层:对于用例,它是在各个字段中管理调用关系,例如饰面 - > a字段 - > b字段
现场层:有域服务,以及该领域的相应子 - domain。
基本层:处理数据库,缓存,第三方等。
在概念上,它是为了实现低耦合与适配器的效果。外界通过适配器访问内部接口,并取决于内部
问:什么是内在的?
您到达底层的越多,耦合越高,我在哪里实现它。例如,我使用什么中间件,这里的耦合最高。如果您到达外部,您将成为外部呼叫的抽象接口和适配器。
基础架构层是接口,域实现了相应的接口函数。这种依赖的方向是向外的,我使用了哪种中间件以及Domian层求解了哪种类型的注射。
问:这种设计有什么好处?
我们的许多框架都依赖于第三方框架,例如Mybatis,MQ等。因此,有哪些缺点?就在我更改其他组件时,我会更改很多事情
域层被设计为接口的好处,即,特定的实现将不取决于其他组件。它可以随时实施|域|包括内容|| - | - | - |||重新定位|映射映射器和扩展程序,避免它避免依赖于底层||ACL |反腐蚀层,从外部处理不同的事物,例如协议,API,缓存|
DDD的目的是在高内部和低耦合中聚集。它在业务领域分开,然后在现场实现相应的功能以实现高内部聚会。然后使用适配器依赖于倒置并实现低耦合。
在一定程度的业务量中,有一些项目相对较高的业务复杂性,这是相对较高的可扩展性。
DDD如何练习?
如果您认为这很有帮助,请注意博客作者,谢谢????
原始:https://juejin.cn/post/7099492996244045831