![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计原则与思想:面向对象
文章平均质量分 92
彻底搞懂什么叫面向对象
码龄23年
想起来就更新
展开
-
12 | 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
本文详细介绍了基于充血模型的领域驱动设计(DDD)开发虚拟钱包系统的方法。通过讨论钱包业务的背景和核心功能,文章阐述了虚拟钱包系统的设计思路与实现细节,使读者深入了解充血模型的DDD开发模式。与贫血模型相比,充血模型将部分业务逻辑移至领域模型中,减少了Service层的复杂度,但依赖于Domain类的实现。文章还探讨了Service层在处理与Repository层交互、业务聚合和事务幂等等方面的变化。总体而言,本文为理解和应用充血模型的DDD开发提供了实践指导。原创 2024-09-10 15:31:31 · 356 阅读 · 0 评论 -
11 | 实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
本文探讨了贫血模型与充血模型在MVC架构中的应用及其对面向对象编程的影响。贫血模型将数据与操作分离,削弱了封装性,而充血模型将数据和业务逻辑封装在同一类中,符合面向对象的封装特性。文章介绍了充血模型的领域驱动设计(DDD)模式及其在微服务中的应用,并分析了贫血模型受欢迎的原因,如业务简单、充血模型设计难度大等。总体来说,文章帮助读者理解这两种开发模式及其对代码复用性和维护性的影响。原创 2024-09-10 15:09:17 · 503 阅读 · 0 评论 -
10 | 理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?
本文探讨了“组合优于继承”的设计原则,旨在解决继承层次过深带来的维护和可读性问题。通过示例,文章展示了继承在表示is-a关系时的局限性,并介绍了如何用组合、接口和委托替代继承。组合和接口实现has-a关系,支持多态和代码复用,避免了复杂的继承层次。文章强调,选择继承还是组合应基于继承结构的稳定性和复杂性。总结了组合在处理代码重复和提高灵活性方面的优势,以及如何决定使用哪种设计。原创 2024-09-09 10:50:28 · 869 阅读 · 0 评论 -
09 | 理论六:为什么基于接口而非实现编程?有必要为每个类都定义接口吗?
本文探讨了“基于接口而非实现编程”的重要性及其应用。作者首先解释了这一原则的核心——将接口与实现分离,封装不稳定的实现,暴露稳定的接口,从而降低代码耦合性,提高扩展性和灵活性。通过实战案例,文章展示了如何在代码中应用此原则,并通过重构代码遵循这一原则。作者提到“基于抽象而非实现编程”是类似概念,强调抽象是提高代码扩展性、灵活性和可维护性的关键。文章总结了设计接口时应遵循的原则,如封装和抽象意识,不暴露实现细节,并根据实现稳定性决定是否定义接口。原创 2024-09-09 10:48:15 · 798 阅读 · 0 评论 -
08 | 理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?
抽象类和接口是面向对象编程中的两个重要概念。抽象类不能被实例化,提供部分方法实现,子类必须实现其抽象方法;而接口不能包含属性,方法没有实现,类实现接口时必须实现所有方法。抽象类表示“is-a”关系,关注代码复用,而接口表示“has-a”关系,注重解耦和扩展性。文章通过Java示例解释了它们的定义与应用,并探讨了抽象类和接口的不同实现方式,如用普通类模拟接口或duck-typing策略。原创 2024-09-08 15:47:06 · 594 阅读 · 0 评论 -
07 | 理论四:哪些代码设计看似是面向对象,实际是面向过程的?
面向对象编程中常见的面向过程风格问题主要包括滥用getter、setter方法、全局变量与全局方法、以及数据和方法分离的类。本文通过三个典型案例展示了这些问题的影响,指出它们违背了封装原则,使代码退化为面向过程风格。作者建议避免滥用getter、setter,拆分功能过于广泛的类,避免大而全的Utils类。此外,文章还探讨了贫血模型在Web项目中的常见性,强调了面向对象编程的重要性,并将在后续探讨实战应用。原创 2024-09-08 15:45:51 · 727 阅读 · 0 评论 -
06 | 理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?
面向过程编程和面向对象编程的区别在于代码组织和设计思路。面向过程以过程为基本单元,适合简单程序开发;面向对象则以类和对象为核心,适用于复杂程序开发。通过C语言和Java代码示例,文章展示了两者的不同之处。面向对象编程具有更好的代码组织、易维护性和扩展性,并提供封装、抽象、继承和多态等特性,提升代码的复用性和可扩展性。虽然两者并非完全对立,但面向对象编程更适合大规模复杂项目,已成为主流编程范式。原创 2024-09-06 09:55:38 · 791 阅读 · 0 评论 -
05 | 理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?
面向对象编程的四大特性是封装、抽象、继承和多态。本文重点介绍了封装,通过限制对类内部数据的访问,保护数据不被随意修改,提升类的易用性和维护性。文章以虚拟钱包为例,说明封装的实际意义。抽象隐藏方法的实现细节,调用者只需关注功能而非实现过程。继承则实现代码复用,但过度使用可能影响代码可读性。多态允许子类替代父类运行,提升代码的扩展性和复用性,是设计模式的基础。本文深入解析了这些特性的意义和实现。原创 2024-09-06 09:07:18 · 873 阅读 · 0 评论 -
04 | 理论一:当谈论面向对象的时候,我们到底在谈论什么?
本文深入探讨了面向对象编程的概念及其相关内容,包括面向对象编程的历史发展、定义、特性以及面向对象分析和设计。作者强调了面向对象编程的基本特性:封装、抽象、继承、多态,并讨论了面向对象编程语言的判定标准。此外,文章还提到了UML(统一建模语言)的复杂性及其在实际项目中的使用情况。总体而言,本文全面深入地探讨了面向对象编程的相关概念,适合对该主题感兴趣的读者阅读。原创 2024-09-05 09:12:03 · 600 阅读 · 0 评论