面向对象编程(OOP):
- 面向对象编程是一种编程范式,它将数据与操作数据的方法封装在一起,形成对象。
- OOP 通过类和对象的概念来组织和管理代码,提供了封装、继承和多态等特性,以支持代码的可维护性、可扩展性和可重用性。
- 在面向对象编程中,我们将现实世界中的实体抽象成对象,对象之间通过消息传递来交互,从而更好地模拟现实世界的复杂性。
面向过程编程(POP):
- 面向过程编程是另一种编程范式,它将问题分解成一系列的步骤和操作,然后按照这些步骤逐步解决问题。
- POP 更加侧重于过程和流程的设计,它使用函数或者过程来描述程序的行为,而数据与操作是分离的。
- 在面向过程编程中,我们将问题分解成一个个可执行的过程或函数,并通过控制流来组织这些过程的执行顺序。
DDD(领域驱动设计)充血模型:
- DDD 强调将业务领域的知识和逻辑直接体现在软件设计中,其核心概念是领域模型。
- DDD 中的充血模型指的是将领域模型充实起来,使其包含丰富的业务逻辑和行为。
- 在充血模型中,对象不仅仅是简单的数据结构,而是具有丰富的行为和逻辑,能够自主地处理业务问题。
- 充血模型中的对象通常包含行为方法(方法)和状态(属性),并且能够通过方法来改变自身状态以及与其他对象进行交互。
在软件架构设计中,面向对象编程、面向过程编程和DDD充血模型之间并不是互斥的,而是可以结合使用的。比如,在使用DDD时,我们可以使用面向对象编程的思想来设计和实现领域模型,同时在底层实现中也可以使用面向过程的编程风格来处理一些简单的操作或者底层细节。
什么项目适合充血模型DDD?
不要盲目追求DDD,简单的业务系统或者特定的业务场景有时更适合贫血模型开发。
什么项目适合充血模型DDD?
- 复杂业务系统,例如包含各种利息计算模型、还款模型的金融业务系统
- 当你发现你的Service已经臃肿不堪,不能再往上堆代码需要重构的时候可以考虑
- 当使用DDD重构时候,请务必熟悉业务架构,业务驱动开发,即使你对DDD概念再深入,不熟悉业务架构是设计不出一流的DDD架构的