第一章:废柴觉醒
(地下武馆内,我被十个黑衣人围住)
「废物!就凭你这把破木剑?」为首的刀疤男甩出飞刀,刀锋劈断我手中木剑的瞬间——
我突然笑了。
「你以为我为什么叫『万能铁匠』?」我从背后掏出一把打火机,「看见这个纹路了吗?这是爷爷留下的…」
火焰升腾中,地面浮现出巨大的齿轮阵图。
第二章:暗黑工坊
(密室里,三台蒸汽轰鸣的巨型机床)
「选择吧!」我拍碎控制台,十七个金属面板同时弹开:
- 🔪 钢铁屠宰场:生产冷兵器
- ⚡ 雷鸣工坊:制造电磁炮
- 🧪 生化实验室:培育变异怪兽
刀疤男的瞳孔地震:「你根本不是人类!这是…」
第三章:首战告捷
(当第一个飞刀刺来时,我按下红色按钮)
// 客户端代码(我)
WeaponFactory factory = getFactory("Iron"); // 根据敌人类型选择工厂
Weapon weapon = factory.createWeapon(); // 动态创建武器
weapon.attack(); // 击溃敌人
「叮!」
一把滴血的玄铁战斧贯穿刀疤男胸口,他还没反应过来,第二个飞刀已经被电磁网黏在空中。
第四章:狂暴生产
(屏幕显示倒计时:30秒后BOSS「暗影帝王」降临)
我疯狂敲击键盘:
public abstract class WeaponFactory { // 抽象工厂
public abstract Weapon createWeapon();
}
public class IronKnifeFactory extends WeaponFactory { // 具体工厂1
@Override
public Weapon createWeapon() {
return new IronKnife("屠龙斩"); // 具体产品
}
}
public class MagicSwordFactory extends WeaponFactory { // 具体工厂2
@Override
public Weapon createWeapon() {
return new MagicSword("弑神锋"); // 具体产品
}
}
「滴滴!检测到BOSS能量波动!」系统警报响起时,我已切换到「生化工厂」,培养皿中跳出三只狂暴狼蛛。
第五章:终极对决
(暗影帝王带着黑洞炮出现)
「你竟敢用…工厂方法?」BOSS的声音带着恐惧,「我的暗黑军团可以无限复制!」
我冷笑一声,启动所有工坊:
List<WeaponFactory> factories = Arrays.asList(
new IronKnifeFactory(),
new MagicSwordFactory(),
new BioMonsterFactory()
);
// 同时生产海量武器
factories.forEach(factory -> {
for(int i=0;i<1000;i++) {
factory.createWeapon().attack();
}
});
第六章:上帝模式
(漫天都是旋转的刀剑、跳跃的雷球、撕咬的巨兽)
BOSS的暗黑铠甲在绝对火力下崩解:「不…不可能!你怎么能同时生产这么多类型武器?」
我踩着满地零件走到他面前:
「因为工厂方法的核心是——把造东西的权力交给子类,而老子永远掌握选择权!」
第七章:战后传承
(我坐在废墟上,给徒弟们讲解设计图)
「记住了!工厂方法不是流水线,而是…」
我画出架构图:
[客户端]
│
▼
[抽象工厂]
├─→ [具体工厂A] → [产品A1]
├─→ [具体工厂B] → [产品B1]
└─→ [具体工厂C] → [产品C1]
「比如王者荣耀的英雄工厂、英雄联盟的皮肤工厂、甚至外卖平台的送餐工厂…」
** design pattern 总结**
工厂方法的核心是**“造儿不如养儿,养儿不如放手”**:
✅ 优点:
- 解耦产品与工厂,新增产品只需加工厂(开闭原则)
- 支持并行生产,适合大规模制造
- 代码结构清晰,易于维护
⚠️ 注意事项:
- 产品必须属于同一产品族(否则会乱套)
- 避免滥用导致工厂爆炸式增长
- 接口设计要足够抽象
适用场景:
- 游戏中的装备系统
- 汽车制造的不同车型生产线
- HTTP请求的多种处理器
一句话口诀:
“想要随时换装备?先建好你的武器工厂!”
关注我,看更多关于设计模式的爽文~
顶级程序员都在偷偷看的书单!免费领50+本技术神作
关注公众号【苏师兄编程】,回复“书单”,即可领取上面书单