先别急着背模板方法,先搞懂“变与不变”

很多人在写 Android 时都遇到过这样的困惑:Activity 的生命周期方法明明写在子类里,可为什么系统会在特定时刻调用它们?为什么我们只需要重写 onCreate(),而不需要自己写一个 main() 来启动一切?这背后其实是框架在“反向控制”你——它定义了完整的流程骨架,把可以变化的部分留给你去填充。这门课的第 1、2 节,就是要把这层窗户纸捅破。

“变与不变之分离”原则,说穿了就是:把稳定不变的流程写死在父类里,把容易变化的具体步骤抽成方法,交给子类去实现。Template Method(模板方法)模式正是这个原则的代码化表达。如果你只记住了 UML 图,却不知道 Android 框架里到处都是它的影子,那这个模式对你来说就只是一张死图。这门课的核心价值,就是带你从原则出发,再落地到 Android 源码场景,让你真正理解框架为什么长成那样。

适合什么基础,建议先看哪几块

这门课不是讲 Java 语法的基础课。你需要已经能独立写一个简单的 Activity,知道 onCreate()、onResume() 这些方法是被系统调用的,但可能说不清调用链背后的设计意图。如果你对“继承”和“多态”有基本概念,理解起来会顺畅很多;如果没有,建议先补一下 Java 面向对象的基础,再回来听课。

具体到学习顺序,我建议你按目录顺序来,但要有侧重。第 1 节“变与不变之分离”和第 2 节“框架的反向控制”是整个思维的地基,别看它们只有十几分钟,却是后面理解 Template Method 的钥匙。如果你时间紧,可以先把这两节看两遍,再进入第 3 节“介绍 Template Method 模式”和第 4 节“Android 框架与 Template Method 模式”。第 4 节是重中之重,它会把你前面学的抽象概念和 Android 源码里的具体实现连起来。不要跳着只看模式定义,那样你又回到了“背图”的老路上。

学完能独立做什么,资料怎么配合练习

学完这门课,你应该能独立完成两件事:一是看到 Android 框架里的某个基类方法,能判断出它是不是模板方法,并说出可变步骤在哪里;二是自己动手设计一个类似的框架结构,比如封装一个 BaseActivity,把加载数据、显示加载中、处理错误这些固定流程写在一个模板方法里,让子类只去实现具体的数据获取逻辑。更进一步,你还能结合源码去分析 AsyncTask 或 Handler 相关流程中模板方法的应用,而不是停留在“会调用”的层面。

资料里的

课程目录

1 「变与不变之分离」原则与手艺 (18:32)
2 框架的反向控制 (15:58)
3 介绍Template Method模式 (25:59)
4 Android框架与Template Method模式 (25:02)