03抽象工厂:老子一工厂,能造整个银河系!


第一章:星际逃亡

(宇宙飞船内,我被三波虫族包围,左手握着能量光剑,右手操控着护盾发生器)
「警告!能量核心过载!武器库只剩最后两套装备!」
副驾驶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的惨叫被引力波碾碎:「你竟敢…合并不同产品族!这违反设计规范!」

我冷笑一声
「抽象工厂的终极形态,就是打破产品族限制——只要接口兼容,造啥都行!」


第六章:模式揭秘——为什么抽象工厂能统治宇宙?

(在废墟中,我给联邦战士讲解设计图)
「记住了!抽象工厂的核心是——批量生产标准化套装:」

  1. 产品族绑定:选定了啤酒厂,就只能买到啤酒+杯子+开罐器(比如外星工厂的脉冲炮+护盾+摩托)
  2. 并行生产:汽车厂可以同时生产电动车和燃油车两条生产线
  3. 灵活切换:奶茶店想换原料供应商?直接换工厂,不用改菜单代码

代码对比:工厂方法 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+本技术神作

关注公众号【苏师兄编程】,回复“书单”,即可领取上面书单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值