第一章:星际逃亡
(宇宙飞船内,我被三波虫族包围,左手握着能量光剑,右手操控着护盾发生器)
「警告!能量核心过载!武器库只剩最后两套装备!」
副驾驶AI突然尖叫:「侦测到敌方母舰——他们正在生产脉冲炮+自爆无人机!」
我扯掉沾血的披风,露出腰间闪烁的金属立方体
「启动『星河工厂』!」我狠狠砸向控制台,整个舱室瞬间被蓝光笼罩。
「这是爷爷留下的…抽象工厂模块!」
第二章:终极赌注
(全息屏上浮现出三个选项)
// 客户端第一次选择:外星科技产品族
FactoryProducer producer = FactoryProducer.getProducer("Alien");
// 一键生产整套装备(脉冲炮+护盾+摩托)
Weapon weapon = producer.getWeapon(); // 脉冲炮
Armor armor = producer.getArmor(); // 能量护盾
Vehicle vehicle = producer.getVehicle(); // 反重力摩托
「嗡——」
三台装备同时完成,虫族先锋部队在紫色闪电中灰飞烟灭。
我舔了舔嘴角的血
「这他娘就是抽象工厂的威力!造枪炮的同时自动配护甲和坐骑!」
第三章:代码解剖——工厂里的秘密
(飞船残骸中,我给联邦战士讲解设计图)
「看懂了吗?抽象工厂就像个全能管家——」
我指着全息投影中的类图:
[客户端]
│
▼
[抽象工厂] ←─┬─ [外星工厂]
│ │ │
│ ├─→ 脉冲炮 │
│ ├─→ 能量护盾 │
│ └─→ 反重力摩托 │
└─┬─ [机器人工厂] ←─┘
│
├─→ 激光枪
├─→ 机甲装甲
└─→ 无人机蜂群
代码段1:抽象工厂接口
// 最顶层的「生产大纲」
public interface AbstractFactory {
Weapon createWeapon(); // 必须生产武器
Armor createArmor(); // 必须生产护甲
Vehicle createVehicle(); // 必须生产载具
}
「所有工厂都必须遵守这个生产大纲!」
代码段2:具体工厂实现
// 外星科技工厂生产线
public class AlienFactory implements AbstractFactory {
@Override
public Weapon createWeapon() {
return new PulseLaser("等离子脉冲炮"); // 具体产品
}
@Override
public Armor createArmor() {
return new EnergyShield("相位护盾"); // 具体产品
}
@Override
public Vehicle createVehicle() {
return new HoverCraft("反重力摩托"); // 具体产品
}
}
// 机器人科技工厂生产线
public class RobotFactory implements AbstractFactory {
@Override
public Weapon createWeapon() {
return new RailGun("电磁轨道炮");
}
@Override
public Armor createArmor() {
return new Exoskeleton("纳米机甲");
}
@Override
public Vehicle createVehicle() {
return new DroneSwarm("无人机蜂群");
}
}
「每个工厂都是独立的生产线,专门打造特定风格的装备组合!」
第四章:变态输出——工厂的恐怖效率
(敌方母舰降下百米长的机械触手)
「不可能!你只有两分钟能量!」BOSS通过翻译器咆哮。
我狂笑着连续点击生产按钮
// 第一波攻击套装:外星科技(快速近战)
FactoryProducer alienProd = FactoryProducer.getProducer("Alien");
Weapon pulse = alienProd.createWeapon(); // 脉冲炮
Armor shield = alienProd.createArmor(); // 护盾
Vehicle hover = alienProd.createVehicle(); // 摩托
// 同时使用三个装备
pulse.fire(); // 「嗡!!!」脉冲炮过载
shield.activate(); // 「滋啦!!」护盾展开
hover.boost(); // 「嗖!!!」瞬间提速
// 第二波防御套装:机器人科技(远程轰炸)
FactoryProducer robotProd = FactoryProducer.getProducer("Robot");
Weapon rail = robotProd.createWeapon(); // 轨道炮
Armor exo = robotProd.createArmor(); // 机甲
Vehicle swarm = robotProd.createVehicle(); // 蜂群
// 组合技发动
rail.load("EMP弹头"); // 装填特殊弹药
exo.toggleJetpack(); // 启动喷气背包
swarm.deploy(); // 放出无人机群
爆炸声中,BOSS的机械触手被自己发射的EMP弹头炸断
「你竟敢…混合使用不同科技?」BOSS的电子音出现紊乱。
第五章:灭霸式打击——终极混合工厂
(当BOSS启动「黑暗吞噬」技能时,我突然切换到隐藏模式)
// 生产究极套装(混合多个产品族)
AbstractFactory ultimateFactory = new UltimateFactory();
ultimateFactory.createWeapon(); // 星爆湮灭弹(外星科技)
ultimateFactory.createArmor(); // 黑洞吸收护甲(机器人科技)
ultimateFactory.createVehicle(); // 引力波推进器(自定义)
ultimateFactory.createSupport(); // 时间减缓装置(神秘科技)
「轰!!!」
整个星系在蓝光中坍缩成奇点,BOSS的惨叫被引力波碾碎:「你竟敢…合并不同产品族!这违反设计规范!」
我冷笑一声
「抽象工厂的终极形态,就是打破产品族限制——只要接口兼容,造啥都行!」
第六章:模式揭秘——为什么抽象工厂能统治宇宙?
(在废墟中,我给联邦战士讲解设计图)
「记住了!抽象工厂的核心是——批量生产标准化套装:」
- 产品族绑定:选定了啤酒厂,就只能买到啤酒+杯子+开罐器(比如外星工厂的脉冲炮+护盾+摩托)
- 并行生产:汽车厂可以同时生产电动车和燃油车两条生产线
- 灵活切换:奶茶店想换原料供应商?直接换工厂,不用改菜单代码
代码对比:工厂方法 vs 抽象工厂
// 工厂方法:造单个产品(比如造刀剑)
public abstract class WeaponFactory {
public abstract Weapon createWeapon();
}
// 抽象工厂:造一整套产品(比如造刀剑+护甲+坐骑)
public abstract class AbstractFactory {
public abstract Weapon createWeapon();
public abstract Armor createArmor();
public abstract Vehicle createVehicle();
}
「工厂方法像手机组装厂——只负责生产手机;抽象工厂像苹果旗舰店——直接给你整台iPhone+AirPods+MagSafe!」
** design pattern 总结**
抽象工厂的核心是**“成套出售,拒绝单买”**:
✅ 优点:
- 保证产品兼容性(比如衣服+裤子必须配套)
- 支持多条生产线并行生产(如游戏同时加载多个皮肤套装)
- 客户端无需知道产品内部细节(只需要说"我要外星装备")
⚠️ 注意事项:
- 产品族必须严格关联(不能让咖啡机生产奶粉)
- 扩展新工厂容易,扩展新产品族难(需要改所有工厂)
- 适合初期固定产品线,后期需用其他模式(如建造者)
适用场景:
- 游戏中的角色装备系统(套装效果)
- 汽车制造的不同配置方案(基础版/豪华版)
- 快餐店的套餐组合(汉堡+薯条+饮料)
一句话口诀:
“想要全家桶?抽象工厂直接给你造个集装箱!”
关注我,获取更多技术干货~
顶级程序员都在偷偷看的书单!免费领50+本技术神作
关注公众号【苏师兄编程】,回复“书单”,即可领取上面书单