面向对象、设计原则、设计模式、编程规范、重构五者的关系
最经典的设计模式书籍是GoF的《设计模式》,他的中文全称叫《设计模式:可复用面向对象软件的基础》,为什么他在标题中会特意提到“面向对象”呢?
面向对象
针对面向对象,我们需要掌握7点。
- 面向对象的四大特性:封装、抽象、继承、多态;
- 面向对象和面向过程编程的区别与联系;
- 面向对象分析、设计、编程;
- 接口和抽象类的区别以及各自应用场景;
- 基于接口而非基于实现编程的设计思想;
- 多用组合少用继承的设计思想;
- 面向过程的贫血模式和面向对象的充血模式;
设计原则
主要是几个比较常用的设计原则。
- SOLID原则-SRP(single responsibility principle)单一职责原则;
- SOLID原则-OCP(open closed principle)开闭原则;
- SOLID原则-LSP(liskov substitution principle)里式替换原则;
- SOLID原则-ISP(interface segregation principle)接口隔离原则;
- SOLID原则-DIP(dependency inversion principle)依赖倒置原则;
- DRY(don't repeat yourself)原则、KISS(keep it simple and stupid)原则、YAGNI(you ain't gonna need it)原则、LOD(law of demeter)原则;
设计模式
经典的设计模式有23种。它们又可以分为三大类:创建型、结构型、行为型。对于这23种设计模式,我们又可以按照类型区分是否常用。
创建型
常用的有:单例模式、工厂模式(工厂方法和抽象工厂)、建造者模式。
不常用的有:原型模式。
结构型
常用的有:代理模式、桥接模式、装饰器模式、适配器模式。
不常用的有:门面模式、组合模式、享元模式。
行为型
常用的有:观察者模式、模板模式、策略模式、责任链模式、迭代器模式、状态模式。
不常用的有:访问模式、备忘录模式、命令模式、解释器模式、中介模式。
编程规范
编程规范主要解决的是代码的可读性问题。编码规范相对于设计原则、设计模式,它更加具体、更加偏重代码细节。即便你可能对设计原则不熟悉、对设计模式不了解,但你最起码要掌握基本的编码规范,比如如何给变量、类、函数命名,如何写代码注释,参数不能过多等等。
对于编码规范,可以参考的书籍有很多(比如《重构》、《代码大全》、《代码整洁之道》等)。
代码重构
对于重构,我们需要掌握以下几个知识点:
- 重构的目的、对象、时机、方法;
- 保证重构不出错的技术手段:单元测试和代码的可测试性;
- 两种不同规模的重构:大重构(大规模高层次)和小重构(小规模低层次)
五者之间的联系
- 面向对象编程因为其具有丰富的特性(封装、抽象、继承、多态),可以实现很多复杂的设计思路,是很多设计原则、设计模式等编程实现的基础。
- 设计原则是指导我们代码设计的一些经验总结,对于某些场景下,是否应该应用某种设计模式,具有指导意义。比如,“开闭原则”是很多设计模式(策略、模板等)的指导原则。
- 设计模式是针对软件开发中经常遇到的一些设计问题,总结出来的一套解决方案或者设计思路。应用设计模式的主要目的是提高代码的可扩展性。从抽象程度上来讲,设计原则比设计模式更抽象。设计模式更加具体,更加可执行。
- 编程规范主要是解决代码的可读性问题。编程规范相对于设计原则、设计模式,它更加具体、更加偏重代码细节、更加能落地。持续的小重构依赖的理论基础主要就是代码规范。
- 重构作为保持代码质量不下降的有效手段,利用的就是面向对象、设计原则、设计模式、编码规范这些理论。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术