设计概念的统一语言
当我们在讨论领域驱动设计时,不止要谈到领域驱动设计固有的设计概念,结合开发语言和开发平台的设计实践,又会有其他设计概念穿插其中,它们之间的关系并非正交的,解决的问题和思考的角度都不太一致,许多设计概念更有其历史渊源,却又在提出之后或者被滥用,后者被错用,到了最后已经失去了它本来的面目。因此,我们首先 ...
2021-11-16
架构设计的三个原则
在进行架构设计时,需要遵循如下原则:一致原则、简单原则、演进原则。一致性是软件架构质量原则的根基,遵循一致原则的软件架构可以有效地保证整个架构解决方案的清晰直接,降低了解决方案的复杂度。对于规模引起的复杂度,可以通过“分而治之”的思想来解决,也就是将整个系统按照业务维度拆分为多个细小而简单的模块(组 ...
2021-11-16
企业架构与领域驱动设计的融合
DDD的作用范围主要还是针对系统级的分析、架构与设计,在更高的层面上,即将问题空间扩大到超过系统范围,变成企业或组织范围之后,DDD的模式就显得捉襟见肘了。此时,可以考虑引入企业架构的思想,尤其是业务架构的内容,给了DDD很好的补充,又或者说,将企业架构与DDD融合起来,就能真正串联起战略和战术设计 ...
2021-11-16
业务架构映射为应用架构
通过《多维度规划业务架构》,我们获得了由业务领域-业务组件-业务服务三个层次组成的业务架构。虽然是架构,但其本质仍然属于问题空间,其目的在于真实地探索问题空间,了解我们要解决什么样的问题。我们用到“分解”的方法,并非在解决问题,而是希望通过横向分层与纵向切分让问题空间变得更小,降低业务复杂度罢了。
2021-11-16
领域驱动建模与面向对象建模的差异
即便采用面向对象建模范式,领域驱动设计的建模仍与面向对象建模存在较大差异,原因在于领域驱动设计引入了限界上下文(Bounded Context)与聚合(Aggregate),使得建模的风景变得迥然不同。二者为领域模型引入了边界的约束,使得建模者不能随心所欲地建模,亦改变了模型的面貌。
2021-11-16
领域驱动设计对依赖的控制
我在《解构领域驱动设计》一书中分析了软件复杂度的成因,一曰规模,一曰结构,还有一个则是变化的影响。规模与结构存在一定的矛盾关系:解决规模复杂度的有效方法为“分而治之”,一旦系统被分解为多个更为细小的软件元素,结构复杂度就会增加。结构与变化之间存在互相影响的关系:如果结构控制不合理,变化带来的影响就会 ...
2021-11-16
面向对象困境之 —— 菱形缺陷
我们知道 C++ 是支持 多重继承(multiple inheritance)的,即一个类可以同时从多于一个父类继承行为与特征。而现在大多数现代编程语言对 多重继承 避而远之,例如 PHP 、Swift、Java 都是不支持 多重继承 的。因为多重继承增加了程序的复杂性和含糊性,例如容易导致菱形缺陷 ...
2021-11-16
贪心算法与正确性归纳证明
贪心算法不是从整体最优的角度上考虑问题,而是只在意某种意义上的局部最优解。因此,贪心算法并不能保证在所有情况下都能获得最优解。所以在使用贪心算法时,我们需要确保自己能证明最优解的正确性。贪心算法并不能保证在所有情况下都能获得最优解,所以在使用贪心算法时需要证明算法的正确性,常见的证明方法有归纳法与交 ...
2021-11-16
MySQL 覆盖索引与延迟关联
如果 MySQL 根据索引查找到数据,但索引的叶子结点中并不包含我们所需要的数据字段,那么仍然需要进行回表查询。如果一个索引包含(覆盖)我们所需要查询的所有字段值,我们就称之为「覆盖索引」。
2021-11-16
北漂三年,我依然是一个非著名程序员
今年上半年看了几部不错的电视和电影,例如大江大河,这些影视作品很好地讲述了在时代变迁中,命运、奋斗、机会、抉择对个体的影响,我们身处在时代潮流中,没有办法跳出去像看历史一样看我们所处的时代和生活,短期内也不可能看出自己每天做的事情对未来的影响,只有时间会告诉我们答案。经过刚毕业的青涩期,现在的我慢慢 ...
2021-11-16

© 2016 - 2024 chengxuzhixin.com All Rights Reserved.

浙ICP备2021034854号-1    浙公网安备 33011002016107号