美文网首页工作生活
DDD -- 领域驱动设计 -- 面向对象(OOA/OOD)的缺

DDD -- 领域驱动设计 -- 面向对象(OOA/OOD)的缺

作者: 夕望有你 | 来源:发表于2019-07-04 09:59 被阅读0次

    OOA/OOD/OOP中,尤其是OOD/OOP,大家都不陌生,用了很多年。并且大部分人,都是从OOP开始,到了一定阶段,会再去接触OOD, 之后是OOA。

    这样用久了,自然而然会觉得“面向对象”是天经地义的,不太会去想面向对象有什么问题所在。

    而DDD里面,就很明确的指出了面向对象的2个问题,并给出了相应的解决答案。

    问题1:面向对象擅长表达“结构”,不擅长表达“行为”

    在面向对象里面,我们把系统里面所有东西都表达成对象 + 对象之间的关系,这样清晰的表达出了系统的“结构”。

    但是对于“行为”,也acazacyzz'-xx,就是“流程”,通常被掩盖了。比如一个业务流程,它牵扯到好几个对象,那这个流程,反映在代码里面,就是对象与对象之间的引用和互相调用关系,这实际是一种“隐性表达”。虽然你可以画“交互图”,但这种交互图只能停留在设计层面,在代码层面,没有对应物。

    所以DDD里面引入了“领域服务”,单独把重要的“行为”抽出来进行“显性”表达。

    问题2:面向对象不擅长表达“业务规则”

    业务规则,说到底也是种“行为”,而在代码里面,我们通常把业务规则表达成了对象的某个方法。

    随着业务规则的复杂,这个方法也变得越来越难理解。所以设计模式里面有Strategy模式,对这种场景进行建模。

    但设计模式主要偏重从技术角度去谈这个问题,DDD呢,把这个特意强调了出来。强调在业务分析的时候,就把“业务规则显性化”,为此引入了Specification模式。

    总结

    所以说,DDD其实是面向对象方法论的一个升华.

    相关文章

      网友评论

        本文标题:DDD -- 领域驱动设计 -- 面向对象(OOA/OOD)的缺

        本文链接:https://www.haomeiwen.com/subject/ijxlhctx.html