建造者模式:订制汉堡的故事 🍔

想象一下,如果做汉堡也需要设计模式…

出场人物:

  • 顾客小明 😋:想要各种不同的汉堡
  • 厨师老王 👨‍🍳:传统做法,每个汉堡都要问一遍
  • 汉堡建造师小李 🎯:新方法,有条不紊地建造汉堡
  • 汉堡指挥官 📋:知道各种汉堡的制作步骤

第一幕:传统混乱法(没有建造者模式)

小明:”老王师傅,我要个汉堡!”

老王:”好嘞!要什么面包?白面包还是全麦?”

小明:”白面包。”

老王:”肉饼要几个?牛肉还是鸡肉?”

小明:”两个牛肉饼。”

老王:”cheese要吗?什么cheese?”

小明:”要cheddar cheese。”

老王:”蔬菜呢?生菜?番茄?洋葱?黄瓜?”

小明:”生菜和番茄就行。”

老王:”酱料呢?番茄酱?美乃滋?芥末?BBQ酱?”

小明:”番茄酱和美乃滋。”

10分钟后…

老王(汗流浃背)“呼…好了!”


第二个顾客来了…

顾客小红:”我也要汉堡!”

老王(叹气)“又来了…要什么面包?”

又是一轮漫长的问答…


第二幕:建造者模式登场!

小明:”小李师傅,我要个经典牛肉汉堡!”

小李:”好的!汉堡指挥官,启动经典牛肉汉堡制作程序!”

汉堡指挥官(看着制作清单)“收到!开始建造…”

汉堡指挥官:”第一步:准备白面包底座。” 小李默默放上面包

汉堡指挥官:”第二步:放两个牛肉饼。” 小李熟练地放上肉饼

汉堡指挥官:”第三步:加cheddar cheese。” 小李加上芝士

汉堡指挥官:”第四步:铺生菜和番茄。” 小李摆放蔬菜

汉堡指挥官:”第五步:挤番茄酱和美乃滋。” 小李添加酱料

汉堡指挥官:”最后一步:盖上面包顶。完成!”

3分钟搞定!


小红来了:”我要个素食汉堡!”

小李:”汉堡指挥官,启动素食汉堡制作程序!”

汉堡指挥官:”收到!素食汉堡建造开始…”

又是有条不紊的步骤,很快完成


小刚来了:”我要个超级豪华汉堡!”

小李:”汉堡指挥官,启动豪华汉堡制作程序!”

汉堡指挥官:”收到!豪华版建造序列启动…”

依然很快搞定


魔法揭秘 ✨

建造者模式 = 有经验的指挥官 + 熟练的建造师

核心思想:

  • 汉堡指挥官(Director):知道各种汉堡的制作步骤
  • 汉堡建造师(Builder):专门负责实际的建造工作
  • 标准化流程:每种汉堡都有固定的制作步骤

优势对比:

❌ 没有建造者模式:

  • 每次都要问一遍所有选项
  • 容易出错或漏掉步骤
  • 效率低,顾客等得久
  • 厨师累得半死

✅ 有了建造者模式:

  • 预设好各种汉堡的制作方案
  • 按步骤执行,不会出错
  • 效率高,顾客满意
  • 可以轻松添加新汉堡类型

在编程中的应用 💻

// 就像汉堡指挥官一样
BurgerDirector director = new BurgerDirector();
BurgerBuilder builder = new ClassicBurgerBuilder();

// 一行代码,完美汉堡!
Burger burger = director.buildBurger(builder);

建造者模式适用于:

  • 需要创建复杂对象
  • 对象有很多可选参数
  • 创建过程需要多个步骤
  • 想要同一个过程创建不同的表示

建造者模式:让复杂的创建过程变得像做汉堡一样简单! 🎉