设计模式深度解析34讲
程序员必备技能系列课
王磊 · 十年经验大厂架构师

共计35节 · 已更新35节

1084人已订阅

课程亮点

  • 市面罕见的设计模式全方面多角度解析课程
  • 收获多达 30 种设计模式,丰富技术高度
  • 收获设计思路的 7 大原则,提升技术认知
  • 基于 Java 语言、通俗易懂的课程示例代码
  • 收获读懂 UML 类关系图的能力
  • 类图、思维导图、趣图全覆盖辅助理解

课程介绍

对设计模式的掌握,是每个程序从业者必备的技能。毕竟设计模式在编程的时候,几乎每时每刻都会遇到、用到。设计模式,是无数工程师在实际项目中不断踩坑爬坑总结出的经验教训,使用设计模式可以让自己的代码变得更加可维护和易于拓展,避免绕弯路,从而高效解决问题。

也许有人认为设计模式玄之又玄,但这种观点其实是代码量不够,或是编程水平处于比较初级的表现。只有学习设计模式,才可以合理组织代码、解耦、最终真正达到对修改封闭对扩展开放的效果。学习,重要的是学习方法与思路,其次才是具体的技术。只有掌握设计模式,才能以不变应万变。

尤其当你在面试中,因为不懂设计模式,而被问得灰头土脸时;当你和周围同事争讨技术实现方案,却被对方抛来的设计模式,怼得无力还击时;当你觉得自己的开发工作,只有 CRUD(增删改查),无法突破自己的技术瓶颈时;当你看到别人写的代码,无论是从现在的调用,还是从将来的扩展,都完美到无可挑剔时。这个时候,说明你该创造条件去好好学习并使用一下设计模式了。

趁早学习设计模式对以后的编程进阶很有帮助。良好的设计模式掌握能力,一是能够帮助你顺利通过面试,找到更好的工作;二是能够帮你更好地进阶架构师、技术布道者,对那些喜欢钻研技术的开发人员来说是很有益的。
设计模式如此重要,但目前市面上现有的设计模式课程都存在以下痛点:

  1. 学习曲线高,理解难度大,读者经常被过于 “专业化” 的名词给搞晕;
  2. 设计模式介绍不够全面,甚至有些还是错误的,以讹传讹,容易给读者造成误导;
  3. 示例过于简单,让读者感觉好像 “看懂了”,但还是不能把所学的内容应用到工作中。

为了解决这些学习问题,帮助大家更好地学习设计模式,本期专栏精心设计课程结构,力图做到真正的通俗易懂。在接下来的课程中,课程会先从设计模式的几大原则讲起,“知其然还要知其所以然”,悉数讲解市面上常见的近 30 种设计模式,通过类图讲解、代码示例、应用场景、优缺点说明等通俗易懂的文字帮助大家更好地理解这些设计模式,并从中总结出设计模式的使用、注意事项等,最终篇会对课程进行系统总结、实践总结,帮助大家的更好地温故而知新。

每节设计模式的内容结构精简明了,大致内容结构组成如下:

  1. 白话讲解设计模式
  2. 类关系图及说明
  3. 代码实现示例
  4. 优缺点分析
  5. 适用场景归纳
  6. 使用实例
  7. 总结和源码下载

讲师王磊,某大厂架构师,资深面试官,阿里云社区认证专家,十余年编程从业经验,曾就职于 360,有着丰富的大型系统设计、开发和调优的经验,在不断探索和学习的过程中,积累了宝贵的编程与面试经验。

讲师晁州,现某互联网公司 Java 高级开发工程师,曾就职于 TCL 集团、东岭集团,五年以上编程从业经验,擅长 Java、Node、Vue 等技术,有着丰富的系统设计、前后端开发经验。

学习设计模式更多地还能帮助梳理解决问题的思路。学习设计模式中蕴藏的丰富的设计理念,取其精髓,取长补短,将这些设计不断应用于现实的系统设计之中,更有助于设计出符合设计美学、高内聚低耦合的功能模块。

俗话说:取乎其上,得乎其中,取乎其中,得乎其下,取乎其下,则无所得以。对于程序开发亦是如此,只有努力学习前人总结的经典设计模式,才能把这种经典的设计模式,应用到平日的开发中去,这样你才能在程序开发这条道路上,不断精进,学有所成。

专栏模块

本期专栏共 34 讲,分为 4 大模块:

设计原则模块

设计七大原则包括:开闭原则、单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特法则、合成复用原则等。只有对这些原则有所了解,才能写出让人惊叹的程序。

创建型设计模式

创建型设计模式关注的是对象的创建,同时隐藏创建逻辑,包含的模式有:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型设计模式

结构型设计模式关注的是类和对象之间的组合,包含的模式有:适配器模式、过滤器模式、装饰模式、享元模式、代理模式、外观模式、组合模式、桥接模式。

行为型设计模式

行为型设计模式关注的是对象之间的通信,包含的模式有:责任链模式、命令模式、中介者模式、观察者模式、状态模式、策略模式、模板模式、空对象模式、备忘录模式、迭代器模式、解释器模式、访问者模式。

J2EE 模式

J2EE 模式,帮你打通除了常见的 23 种设计模式以外的其他设计模式,它包含:MVC 模式、业务代表模式、传输对象模式、数据访问对象模式、前端控制器模式、拦截过滤器模式、服务定位器模式。

查看全部
专栏目录
目录
适合人群
  • 初、中、高级程序员
  • 准备面试的程序员
  • 学生和自学程序开发的准程序员
购买须知
  1. 本专栏为图文形式内容服务,共计 35 小节,上线时间为 2019 年 10 月 15 日,预计 2020 年 1 月 20 日更新完成;
  2. 本专栏更新时间为每周 2、4 更新 1 篇(法定节假日顺延),形式为图文;
  3. 订阅成功后,用户即可通过慕课网 PC 端、App 端、WAP 端享有永久阅读的权限;
  4. 慕课专栏为虚拟内容服务,订阅成功后概不退款;
  5. 在专栏阅读过程中,如有任何问题,请邮件联系 kf@imooc.com;
  6. 慕课专栏版权归本平台所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布 / 发表,违者将依法追究责任。
0 / 3
登录后可任选 3 个小节免费阅读
向往那片天空

厉害了

2019-11-28
0
精慕门5209033

感觉单例模式才是最难的,比如应该讲一下枚举实现单例。再讨论一下序列化如何实现单例。

2019-12-29
1
天天就是学

学习了,学习了,谢谢老师。感觉是一直这么用,并不知道这些是设计原则。比方说父类作为方法参数,父类作为方法返回值,增加功能在子类中拓展等等。但还是并不知道是设计原则。

2019-12-31
0
向往那片天空

mvc还是很流行的

2020-01-02
0
即刻LZ

这个倒是开发的时候很常用,尤其是web开发

2020-01-02
1
向往那片天空

不错

2020-01-10
0
向往那片天空

不错,有启发

2019-12-17
0
乃好

本来是看不懂的,但是看到老师的例子就明白了

2020-02-21
0
大喵爱学习

感谢老师的分享,2020一起加油鸭!

2020-01-27
0
成cc

学习,反复看三遍+了,融入贯通才是最重要的

2019-11-07
4
慕少1581043

厉害了!我的老师!

讲师回复:持续学习,持续进步嘛
2019-10-30
1
向往那片天空

终于完结了,很多东西以后还要多看几遍才能理解

2020-01-20
0
慕粉3448909

垃圾分:干、湿、有害、可回收等,给一组垃圾,输出过滤后的结果。 提取抽象的接口,面向接口编程,具体的分类实现这个接口。 客户端可以单独使用,也可将各个分类放到集合中集中处理,或者按照特定顺序处理,灵活应用。 主要就是:输入数据组-->过滤-->输出结果数据

2019-11-15
1
向往那片天空

学习了,有启发

讲师回复:模式讲解我们会力求做到通俗易懂,有启发就有进步,同学加油~
2019-10-29
3
慕设计2109302

老师讲的很好通俗易懂 如果能在课后布置点作业会更好

讲师回复:这位同学的建议挺不错的,后续我们也会持续改进的,祝同学学习愉快~
2019-10-27
1
成cc

学到了,之前一些文章讲的都很抽象,这篇我读懂了~!

2019-11-14
0
ComputerMan

不错,希望还有后续

讲师回复:谢谢支持,持续关注哦,祝同学学习进步~
2019-10-30
1
向往那片天空

厉害了

2019-11-19
0
疯子丶的天空

上面例子中,手机与软件是不同的类,桥接就是将这两个类组合在一起。手机包含软件,不同手机可以切换不同软件。从上图中可以看到,手机类中含有软件对象成员,这是一种组合,可以把“软件类”理解成“实现”,把“手机类”理解成“抽象”,“实现”修饰“抽象”,比如“红色的书包,绿色的钱包”,颜色就是“实现”,包就是“抽象”,将颜色类与包类组合在一起,并且可以灵活切换,这就是桥接。

2020-02-21
0
慕凡人

看到有的同学说挺难记,其实我们深入去思考这样做的目的是什么,比如第一个开闭原则,就是为了不影响原有功能实现,直接增加一个新的功能,那就原来的不变,只做加法嘛

讲师回复:是的,这位同学的回复到位。认识任何事物都是类似的,想要记得住,第一要点就是要搞明白,为什么要这样设计?这样设计有什么好处,它的作用在于理解事物;第二点就是将知识点和生活或工作中的场景联系起来,也是为了更好的理解并记忆,现在市面上好多速记法其实就是依靠的联想记忆法;第三点就是重复、重复、重复,才能把外在的知识转化为自己的知识。
2019-10-24
2
— 造烛求明,读书求理 —
¥68.00
立即购买