别再看UML了,我用卡皮巴拉教你学设计模式

1 阅读1分钟

别再看UML了,我用卡皮巴拉教你学设计模式

前言

还在背 GoF 的 23 种设计模式吗?

单例、工厂、观察者、策略……背了忘,忘了背,面试前猛背一遍,过了又忘。

为什么?因为设计模式是活的思想,不是死的定义

我做了一个小程序,用漫画 + 闯关的方式把 23 种设计模式讲完了。今天把这套思路整理出来,希望能帮到你。


为什么设计模式这么难学?

大多数教程的讲法是这样的:

定义 + UML 类图 + 代码示例

问题在哪?

UML 类图本身就是门槛。 你还没理解模式,先被 6 个箭头、4 个方框搞晕了。

代码示例脱离场景。 每个例子都是 DuckCatAnimal,你知道了,但不知道什么时候该用

没有反馈。 看完了,不知道自己懂没懂。


换个思路:用故事代替定义

观察者模式为例。

传统讲法:

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

听懂了吗?没有。


漫画讲法:

小爪在森林里开了一家情报站。

每当有新的情报(状态变化),所有的情报员(观察者)都会自动收到通知,不需要小爪一个一个去敲门。

森林情报站(Subject)
    ↓ 通知
情报员A、情报员B、情报员C(Observer)

核心思想一句话:不要主动问,让变化来找你。


这就是观察者模式的本质:事件驱动,解耦通知者和接收者。


23 种模式,我用了 23 个故事

模式故事场景核心思想
单例模式森林里只能有一个情报站长全局唯一实例
工厂方法小爪开了不同风格的餐厅子类决定创建哪个对象
抽象工厂小爪的家具店:风格要统一创建一组相关对象
观察者模式情报站自动通知所有情报员事件驱动、解耦
策略模式小爪遇到不同怪兽换不同招式算法可以互换
装饰器模式给小爪穿装备,一层套一层动态扩展功能
代理模式小爪请了个代理人办事控制访问
适配器模式把不兼容的接口"翻译"一下让不兼容的能一起工作
.........

每个模式都不是靠背定义学会的,是靠理解故事 + 在小程序里闯关验证学会的。


小程序里怎么学?

三步:

第一步:看漫画

每个模式对应一集漫画分镜,熊猫导师讲解,狐狸 PM 负责引出问题,卡皮巴拉小爪负责"踩坑"。

第二步:做选择题验证

看完不是结束,要做题。答错了有漫画框提示,答对了解锁下一关。

第三步:在图鉴里复习

所有学过的模式会收集到图鉴里,随时可以回来复习。


适合谁?

  • 正在学设计模式、但被 UML 类图劝退的人
  • 准备面试、需要快速建立设计模式直觉的人
  • 工作了几年、知道设计模式但用不出来的人

怎么体验?

微信搜索 「爪爪代码冒险记」,直接打开小程序。

目前 23 种模式还在持续更新中,欢迎体验并提反馈。


最后

设计模式不是背诵题,是写代码时的直觉

当你在真实项目里自然而然地想到"这里用个观察者模式会不会更好",那才是真正学会了。

希望我的漫画能帮你建立这种直觉。

祝大家 Coding 愉快 🐾