在系统架构设计师的备考过程中,深入理解面向对象设计中的贫血模型和充血模型是非常关键的。
一、贫血模型(数据与逻辑分离)
1. 知识点内容
- 贫血模型将数据和操作数据的业务逻辑分离开来。数据部分通常以简单的实体类存在,这些类仅仅包含属性和基本的 getter 和 setter 方法。例如,在一个订单管理系统中,订单实体类可能只包含订单号、客户信息、订单金额等属性。
- 业务逻辑则放在单独的服务层或者业务逻辑类中。比如订单的创建、修改、删除等业务操作会在专门的订单服务类里实现。
2. 弊端
- 维护困难:当业务规则发生变化时,由于数据和逻辑的分离,在多个地方可能都需要修改。例如,如果订单金额的计算规则改变了,在数据层、服务层以及可能涉及到的其他相关层的关联代码都需要调整。
- 可读性差:代码分散在不同的类中,对于理解整个业务流程来说不够直观。开发人员在查找某个业务操作对应的代码时,需要在多个类之间跳转。
- 扩展性受限:新增业务功能时,可能会因为逻辑和数据的分离而导致难以找到合适的插入点,容易破坏原有的代码结构。
二、充血模型(领域逻辑封装)
1. 知识点内容
- 充血模型把业务逻辑封装在实体类内部。还是以订单为例,订单类内部不仅包含订单的基本信息属性,还包含订单的创建、修改、验证等业务逻辑方法。例如,订单类可以有一个内部的验证方法来检查订单金额是否合理,是否符合促销规则等。
2. 在复杂业务中的优势
- 提高内聚性:每个实体类都包含了自身的业务逻辑,使得类与自身的相关性更强。这样可以减少代码之间的耦合度,一个实体类的修改不会过多影响其他类。
- 易于理解和维护:整个业务流程的逻辑都集中在实体类内部,对于开发人员来说更容易理解业务的整体流程。当业务规则发生变化时,只需要在对应的实体类内部修改即可。
- 增强扩展性:在复杂业务场景下,新增功能时可以直接在实体类内部进行扩展。比如要为订单添加一个新的属性和相关业务逻辑,只需要在订单类内部操作,不会影响到其他不相关的类。
三、学习方法
1. 理论学习
- 深入研读相关的面向对象设计书籍,如《领域驱动设计》等,书中对这两种模型有详细的理论阐述。
- 观看在线课程视频,很多优质的编程课程平台都有针对面向对象设计模型的讲解视频。
2. 实践操作
- 自己动手编写代码示例。可以创建一个小型的项目,比如图书馆管理系统或者员工管理系统,在项目中分别使用贫血模型和充血模型来实现相同的功能,对比两者的差异。
- 参与开源项目或者在现有的项目中寻找使用这两种模型的实例,分析其优劣,并尝试提出改进方案。
总之,在备考系统架构设计师的过程中,要充分理解贫血模型和充血模型的特点、弊端和优势,通过理论学习和实践操作不断提高自己对这两种模型的掌握程度,以便在实际的系统架构设计中能够做出合理的选择。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!




