极客时间已完结课程限时免费阅读

69 | 访问者模式(下):为什么支持双分派的语言不需要访问者模式?

68 | 访问者模式(上):手把手带你还原访问者模式诞生的思维过程

67 | 迭代器模式(下):如何设计实现一个支持“快照”功能的iterator?

66 | 迭代器模式(中):遍历集合的同时,为什么不能增删集合元素?

65 | 迭代器模式(上):相比直接遍历集合数据,使用迭代器有哪些优势?

64 | 状态模式:游戏、工作流引擎中常用的状态机是如何实现的?

63 | 职责链模式(下):框架中常用的过滤器、拦截器是如何实现的?

62 | 职责链模式(上):如何实现可灵活扩展算法的敏感信息过滤框架?

61 | 策略模式(下):如何实现一个支持给不同大小文件排序的小程序?

60 | 策略模式(上):如何避免冗长的if-else/switch分支判断代码?

59 | 模板模式(下):模板模式与Callback回调函数有何区别和联系?

58 | 模板模式(上):剖析模板模式在JDK、Servlet、JUnit等中的应用

57 | 观察者模式(下):如何实现一个异步非阻塞的EventBus框架?

56 | 观察者模式(上):详解各种应用场景下观察者模式的不同实现方式

55 | 享元模式(下):剖析享元模式在Java Integer、String中的应用

54 | 享元模式(上):如何利用享元模式优化文本编辑器的内存占用?

53 | 组合模式:如何设计实现支持递归遍历的文件系统目录树结构?

52 | 门面模式:如何设计合理的接口粒度以兼顾接口的易用性和通用性?

51 | 适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别?

50 | 装饰器模式:通过剖析Java IO类库源码学习装饰器模式