设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者
123426 人已学习
新⼈⾸单¥98
登录后,你可以任选6讲全文学习
课程目录
已完结/共 113 讲
设计模式与范式:行为型 (18讲)
设计模式之美
15
15
1.0x
00:00/00:00
登录|注册

99 | 总结回顾:在实际软件开发中常用的设计思想、原则和模式

设计模式
重构技巧
编码规范
设计原则
面向对象
总结实际软件开发中常用的设计思想、原则和模式

该思维导图由 AI 生成,仅供参考

到今天为止,理论部分和实战部分都已经讲完了,整个专栏也接近尾声了。我这里用两节课的时间,带你一块复习一下前面学到的知识点。跟前面的讲解相对应,这两节课分别是针对理论部分和实战部分进行回顾总结。
今天,我先来带你回顾一下整个专栏的知识体系。我们整个专栏围绕着编写高质量代码展开,涵盖了代码设计的方方面面,主要包括面向对象、设计原则、编码规范、重构技巧、设计模式这五个部分。我们就从这五个方面,带你一块把之前学过的知识点串一遍。
话不多说,让我们正式开始今天的学习吧!

面向对象

相对于面向过程、函数式编程,面向对象是现在最主流的编程范式。纯面向过程的编程方法,现在已经不多见了,而新的函数式编程,因为它的应用场景比较局限,所以大多作为面向对象编程的一种补充,用在科学计算、大数据处理等特殊领域。
它提供了丰富的特性,比如封装、抽象、继承、多态,有助于实现复杂的设计思路,是很多设计原则、设计模式等编程实现的基础。
在面向对象这一部分,我们要重点掌握面向对象的四大特性:封装、抽象、继承、多态,以及面向对象编程与面向过程编程的区别。需要特别注意的是,在平时的面向对象编程开发中,我们要避免编写出面向过程风格的代码。
除此之外,我们还重点学习了面向对象分析(OOA)、设计(OOD)、编程(OOP)。其中,面向对象分析就是需求分析,面向对象设计是代码层面的设计,输出的设计结果是类。面向对象编程就是将设计的结果翻译成代码的过程。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了软件开发中的设计思想、原则和模式。首先强调了面向对象编程的重要性,介绍了面向对象的四大特性以及面向对象分析、设计和编程的重要性。其次,重点讲解了一些经典的设计原则,包括SOLID原则、DRY原则、KISS原则、YAGNI原则、LOD原则,以及它们的应用场景和指导作用。最后,强调了编码规范对代码可读性的重要性,指出可读性是编写高质量代码的首要条件。此外,文章还涉及了重构技巧和设计模式的内容,强调了持续重构的重要性以及设计模式在解决软件设计问题中的作用。总的来说,本文通过理论和实战两方面的回顾,帮助读者系统地了解了软件开发中的设计思想、原则和模式,为读者提供了全面的知识体系和实用的编程指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《设计模式之美》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(43)

  • 最新
  • 精选
  • 重复了多遍,不停地学不停地忘,这一年看了两本代码整洁之道,大部分都忘了,看了一本架构整洁之道,抽象的概念,原则,计算架构混乱度的公式,也都忘了,只记住了架构师的职责,架构师该做什么,看了一本深入理解java虚拟机三遍,还总结了脑图,就这样也还是忘得差不多了,c++因为工作中用到,看了一半c++primer,现在也都忘完了,effective java看了一遍,做了总结,还是忘完了,算法,撸了两遍数据结构与算法之美,刷了100多道题,现在也记不住多少了,mysql 45讲刷了一半多,也都忘得差不多了,许式伟的架构课刷了一遍,也就记住一些架构师做事的方式...... 大部分知识,只要"知道"就够了,关键时刻能想起他来,再去研究适不适合当前场景.想把细节都捯饬清楚不现实,而且容易忘 所以我的做法是忘就忘了,忘了说明他不重要,毕竟很多内容,平时工作都是凭直觉去思考就能想到,譬如重构一段老代码,或者起一个新模块,跟同事了解完前因后果,需求分析,自然而然就有了解决方案,设计原则,模式也就在不经意之中应用上了,根本不会在一开始就想"我要用某个设计模式"这种问题 然后,知识学到和会用,真的是两码事,前一阵做过一个udp客户端,向服务器发包和收包,我的做法就是发一次再收一次,然后这个模块就经常出现卡死,问题产生的原因很简单,就是udp丢包了,我一直就知道这件事情,选tcp和udp的时候还想过两者各自的优点和缺点,tcp信息传输稳定,但是需要考虑断点重连,udp不需要管理连接,但是需要防止丢包,即便想到这一点,代码依旧没有考虑到这个问题,把发包和收包给串行了,导致请求阻塞,然后给好几个同事看,大家也愣是没找到问题.这件事情让我感触很深,这个知识,你知道他,和你做事情的时候能用上他,真的就是两码事,所以我在总结出一个成长路线,一个对编程不了解的人新入行时,多搬砖成长的快,搬砖熟练到一定程度,补习基础成长的快,补到一定程度,知识开始盈余,实战不足,这时应该多搬砖,所以一个快速提升的途径应该是搬砖->学习->搬砖->学习.无限循环,搬砖的时候不要怕出错,搬砖是对学习成果的检验,学习时不要钻牛角尖,学习是为了学以致用,而不是"秀"给别人看,一定要钻研细节的话就等搬砖用到了,或者面试时再去钻研,忘掉的知识,感觉重要就复习,感觉不重要就忘掉好了

    作者回复: 可以看看我写的这篇文章: https://mp.weixin.qq.com/s/uKkQMIWTtAmvsEYZCxvZeg

    2020-06-19
    8
    40
  • 悟光
    记住了一半吧,但是和原来写的代码做对比发现代码质量真的有非常大的进步。我从争哥专栏一开始就学习了,这期间犯过这么几点错误。 1、看完面向对象的时候设计的时候感觉醍醐灌顶,看完文章两遍之后就觉得掌握了,但是在遇到新的需求做需求分析,设计类的时候还是感觉脑容量不够,有点不知所措,无从下手的感觉。后面反思发现是想一开始就做比较完美的设计和类划分,想到的每个方案其实都有很明显的缺陷,这种矛盾的感觉导致烦躁和自我怀疑。 2、看完编码规范和重构之后,给变量起名的时候也过分纠结了,某种程度上降低效率。后面反思觉得完全可以用注释来提升可读性,没必要在细节上耗费太多精力。 3、看设计模式的时候,某这些瞬间感觉看到新世界,再联想到看过的一些优秀的源码激动的开始鼓掌🤣🤣,心里就起了强烈的实践一下的渴望于是在很小的功能里也用上设计模式😂😂,,导致有同事看我代码的时候有点费劲,尽管也激发了同事学习的兴趣,但是实际上也是一种孤独设计。 对第一种采取:先摈弃空想,有思路就动手画线框图,用大白话写文档,有个初出版,然后在反复揣摩争哥的例子,然后再去改,如此三四遍,开始写代码先完成需求。过一周再回头看看专栏,在做设计,在修改代码。在这个过程中很明显感受到自己对设计原则为什么那么定义有更真切直观的感受,并且感受到对业务的熟悉程度也影响设计的好坏,是循序渐进的过程。 2、编码规范和设计模式的学习,更多的看优秀框架,对框架的一部分觉得很感兴趣就在草稿纸上抄写主要的逻辑(个人觉得手写更慢,能留给大脑更多删减思考优秀优秀代码的精妙),并且对同一部分强迫自己看两三遍,因为一遍有一遍的发现新想法和对优秀代码钦佩的体验。这种感觉加深了记忆。 总结:1、找到自己想详细了解的部分反复看,并且隔段时间在作总结。2、通过手写加深细节记忆,提升理解,找到学习的动力。3、还是反复看和做总结。

    作者回复: 👍

    2020-06-19
    15
  • 旅途
    我是用的主动回想 我在网上看 主动回想的学习方式 优于重复阅读和复习

    作者回复: 嗯嗯 ������

    2020-11-29
    2
  • 张细敏
    老师,后续有课程讲解aop吗?

    作者回复: 你去我公众号里找找😂 “小争哥”

    2020-06-19
    2
  • Winon
    想请教老师关于模板方法模式的疑问,用这种设计模式是否也是一种面向过程做法?是否对于充血模型实适用性情况相对少一点呢?对面向过程的交易流程、步骤适用性情况比较多一点呢?

    作者回复: 好像也没有,不用太纠结于这个。。。😂

    2020-07-04
    1
  • Jxin
    记住大半。比较蠢,我是靠持续重构,眼里不容刺的把自己碰到的每行代码捋顺眼入的门。另外整理知识分享,教会别人,在准备的时候有时能理解得更透测。在解答别人问题时,有时能有眼前一亮新的理解。 总结,较真死磕,用心分享。
    2020-06-19
    2
    66
  • 岁月神偷
    对于一个重复的知识点,学了就忘的根本原因还是没有彻底弄明白,遇到这类情况,我想提出两个观点,一家之言,仅供参照。第一,对于难啃的知识,要学会迂回作战,在遇到非常大的困难时往往我们会陷入一种死磕到底的状态,问题当然是要解决的,但面对强敌,学会迂回也不失为一种战术,一个知识点非常难懂,很可能是这个知识点涵盖的其他知识点你没有掌握,由于对其他知识点的掌握不足,影响了自己的理解。所以,平稳心态继续学习,在某个时间点回过头来看的时候,有的难题真的会茅塞顿开。第二,实践是检验真理的唯一标准,如果学来的知识点一直无法实际运用,你很难说自己完全弄明白了,很多坑是要在实战过程中踩出来的,纸上谈兵的书生和经历过战场的老兵哪个更靠谱一些呢,所以不能一直浮在理论层面,一定要想法设法在工作实践中加以运用,以此来加深自己对知识的理解。当一个人真正搞明白一个知识点的时候,不存在记不记得住之说,同一句话可以有很多种说法,换一种说法他一样能够把这个知识点说明白。
    2020-06-19
    1
    20
  • 强哥
    “教”是最好的“学”,总结、实践并传授其他人。
    2020-06-21
    5
  • 俊辉
    边看边在 ProcessOn 写脑图,减少脑袋即时记忆负担,而且知识架构一目了然。学习、复习效率高了很多。
    2020-06-28
    4
  • buggetout
    1个月把课看到这儿了,编码能力和设计能力大有提高。
    2020-06-19
    4
收起评论
显示
设置
留言
43
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部