[DP] Builder Pattern
建造者模式:订制汉堡的故事 🍔
想象一下,如果做汉堡也需要设计模式…
出场人物:
- 顾客小明 😋:想要各种不同的汉堡
- 厨师老王 👨🍳:传统做法,每个汉堡都要问一遍
- 汉堡建造师小李 🎯:新方法,有条不紊地建造汉堡
- 汉堡指挥官 📋:知道各种汉堡的制作步骤
第一幕:传统混乱法(没有建造者模式)
小明:”老王师傅,我要个汉堡!”
老王:”好嘞!要什么面包?白面包还是全麦?”
小明:”白面包。”
老王:”肉饼要几个?牛肉还是鸡肉?”
小明:”两个牛肉饼。”
老王:”cheese要吗?什么cheese?”
小明:”要cheddar cheese。”
老王:”蔬菜呢?生菜?番茄?洋葱?黄瓜?”
小明:”生菜和番茄就行。”
老王:”酱料呢?番茄酱?美乃滋?芥末?BBQ酱?”
小明:”番茄酱和美乃滋。”
10分钟后…
老王:(汗流浃背)“呼…好了!”
第二个顾客来了…
顾客小红:”我也要汉堡!”
老王:(叹气)“又来了…要什么面包?”
又是一轮漫长的问答…
第二幕:建造者模式登场!
小明:”小李师傅,我要个经典牛肉汉堡!”
小李:”好的!汉堡指挥官,启动经典牛肉汉堡制作程序!”
汉堡指挥官:(看着制作清单)“收到!开始建造…”
汉堡指挥官:”第一步:准备白面包底座。” 小李默默放上面包
汉堡指挥官:”第二步:放两个牛肉饼。” 小李熟练地放上肉饼
汉堡指挥官:”第三步:加cheddar cheese。” 小李加上芝士
汉堡指挥官:”第四步:铺生菜和番茄。” 小李摆放蔬菜
汉堡指挥官:”第五步:挤番茄酱和美乃滋。” 小李添加酱料
汉堡指挥官:”最后一步:盖上面包顶。完成!”
3分钟搞定!
小红来了:”我要个素食汉堡!”
小李:”汉堡指挥官,启动素食汉堡制作程序!”
汉堡指挥官:”收到!素食汉堡建造开始…”
又是有条不紊的步骤,很快完成
小刚来了:”我要个超级豪华汉堡!”
小李:”汉堡指挥官,启动豪华汉堡制作程序!”
汉堡指挥官:”收到!豪华版建造序列启动…”
依然很快搞定
魔法揭秘 ✨
建造者模式 = 有经验的指挥官 + 熟练的建造师
核心思想:
- 汉堡指挥官(Director):知道各种汉堡的制作步骤
- 汉堡建造师(Builder):专门负责实际的建造工作
- 标准化流程:每种汉堡都有固定的制作步骤
优势对比:
❌ 没有建造者模式:
- 每次都要问一遍所有选项
- 容易出错或漏掉步骤
- 效率低,顾客等得久
- 厨师累得半死
✅ 有了建造者模式:
- 预设好各种汉堡的制作方案
- 按步骤执行,不会出错
- 效率高,顾客满意
- 可以轻松添加新汉堡类型
在编程中的应用 💻
// 就像汉堡指挥官一样
BurgerDirector director = new BurgerDirector();
BurgerBuilder builder = new ClassicBurgerBuilder();
// 一行代码,完美汉堡!
Burger burger = director.buildBurger(builder);
建造者模式适用于:
- 需要创建复杂对象
- 对象有很多可选参数
- 创建过程需要多个步骤
- 想要同一个过程创建不同的表示
建造者模式:让复杂的创建过程变得像做汉堡一样简单! 🎉