设计模式01 - 设计模式导论
从本讲起,我们正式进入设计模式的学习。本讲主要介绍了如下内容:
1、为什么要学习设计模式
2、好的代码的常用的五个标准
3、设计模式专题主要讲那些内容(如何写好代码)
1、为什么要学习设计模式
①提高复杂代码的设计和开发能力,避免重构
需求:开发通用的功能模块,如何分层、分模块?应该怎么划分类?每个类应该具有哪些属性、方法?怎么设计类之间的交互?该用继承还是组合?该使用接口还是抽象类?怎样做到解耦、高内聚低耦合?该用单例模式还是静态方法?用工厂模式创建对象还是直接 new 出来?学习完设计模式之后,要刻意锻炼、积累这方面的能力。面对复杂代码、功能、系统的设计和开发,可以作为同事学习、临摹的范例
② 学好设计模式让读源码、学框架事半功倍,为你的职场发展做铺垫
2、好的代码的常用的五个标准
2.1. 可维护性(maintainability)
在不破坏原有代码设计的情况下,能够快速地修改或者添加代码。
代码的可维护性是由很多因素协同作用的结果。代码的可读性好、简洁、可扩展性好,就会使得代码易维护;相反,就会使得代码不易维护。更细化地讲,如果代码分层清晰、模块化好、高内聚低耦合、遵从基于接口而非实现编程的设计原则等等,那就可能意味着代码易维护。除此之外,代码的易维护性还跟项目代码量的多少、业务的复杂程度、利用到的技术的复杂程度、文档是否全面、团队成员的开发水平等诸多因素有关。
2.2. 可读性(readability)
代码容易读懂,容易理解。
是否符合编码规范、命名是否达意、注释是否详尽、函数是否长短合适、模块划分是否清晰、是否符合高内聚低耦合等等。
2.3. 可扩展性(extensibility)
可扩展性,它表示我们的代码应对未来需求变化的能力。
代码的可扩展性表示,我们在不修改或少量修改原有代码的情况下,通过扩展的方式添加新的功能代码。说直白点就是,代码预留了一些功能扩展点,你可以把新功能代码,直接插到扩展点上,而不需要因为要添加一个功能而大动干戈,改动大量的原始代码。
关于代码的扩展性,有条设计原则叫 “ 对修改关闭,对扩展开放 ” 。
2.4. 可复用性(reusability)
可复用性,表示尽量减少重复代码的编写,复用已有的代码。
比如,当讲到面向对象特性的时候,我们会讲到继承、多态存在的目的之一,就是为了提高代码的可复用性;当讲到设计原则的时候,我们会讲到单一职责原则也跟代码的可复用性相关;当讲到重构技巧的时候,我们会讲到解耦、高内聚、模块化等都能提高代码的可复用性。可见,可复用性也是一个非常重要的代码评价标准,是很多设计原则、思想、模式等所要达到的最终效果。
2.5. 可测试性(testability)
是否可以容易被测试,单元测试是否好写功能模块是否独立等等
代码的可测试性是一个相对较少被提及,但又非常重要的代码质量评价标准。代码可测试性的好坏,能从侧面上非常准确地反应代码质量的好坏。代码的可测试性差,比较难写单元测试,那基本上就能说明代码设计得有问题。
3、如何才能写出高质量的代码?
掌握方法论(面向对象思想 + 设计原则 + 设计模式 + 编程规范 + 代码重构理论) AND 实战
要写出满足这些评价标准的高质量代码,我们需要掌握一些更加细化、更加能落地的编程方法论,包括面向对象设计思想、设计原则、设计模式、编码规范、重构技巧等。而所有这些编程方法论的最终目的都是为了编写出高质量的代码。
比如,面向对象中的继承、多态能让我们写出可复用的代码;编码规范能让我们写出可读性好的代码;设计原则中的单一职责、DRY、基于接口而非实现、里式替换原则等,可以让我们写出可复用、灵活、可读性好、易扩展、易维护的代码;设计模式可以让我们写出易扩展的代码;持续重构可以时刻保持代码的可维护性等等。
总结:本专题会就这五点(面向对象思想 + 设计原则 + 设计模式 + 编程规范 + 代码重构理论)进行讲解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!