自底向上和自顶向下的架构设计区别
Posted wenniuwuren
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自底向上和自顶向下的架构设计区别相关的知识,希望对你有一定的参考价值。
某日小明上数学课,他的老师给了很多个不同的直角三角板让小明用尺子去量三角板的三个边,并将长度记录下来。两个小时过去,小明完成任务,把数据拿给老师。老师给他说,还有一个任务就是观察三条边之间的数量关系。又是两个小时,聪明的小明连蹦带跳走进了办公室,说:“老师,我找到了,三条边之中有两条,它们的平方和约等于另外一条的平方。”老师拍拍小明的头,“你今天学会了一个定理,勾股定理。它就是说直角三角形有两边平方和等于第三边的平方和”。
另一个故事,某日老师告诉小明“今天要教你一个定理,勾股定理。”小明说,“什么是勾股定理呢?”“勾股定理是说,直角三角形中有两条边的平方和等于第三边的平方。”然后老师给了一大堆直角三角板给小明,让他去验证。两个小时后,小明告诉老师定理是正确的.
第一个故事说的是自底向上的设计分析方法,第二个故事说的是自顶而下的设计分析方法。
我们用领域建模DDD这种方式,从一个一个用例去推导然后建模一个的业务的方式是自底向上的方式。
而我们在抽象的角度去定义问题,然后问题拆解,这是一个自顶向下的方式。自顶向下最重要的是定义问题,而如何定义问题的前提是知道问题的定义。
阿尔伯特· 爱因斯坦曾经说:“ 提出一个问题往往比解决一个问题更重要。因为解决问题也许仅是一个数学上或实验上的技能而已,而提出新的问题,却需要有创造性的想象力,而且标志着科学的真正进步。”
两种分析方法的根本区别是:自底向上的分析,是从具体到抽象;自顶向下的分析,是从抽象到具体。两种分析思路恰恰又是哲学思考问题的两大方向。
以上是关于自底向上和自顶向下的架构设计区别的主要内容,如果未能解决你的问题,请参考以下文章
算法动态规划 ① ( 动态规划简介 | 自底向上的动态规划示例 | 自顶向下的动态规划示例 )