简单工厂Simple Factory
由一个工厂类凭参数决定实例化哪个产品子类,把 switch-case 的「选择职责」从客户代码里挪走。它不是 GoF 模式,却是最常用的「半个模式」。
全书第一章:四则运算计算器先被写成 if-else 意大利面,重构为「运算类继承 + 简单工厂按运算符 new」。收银台促销一章再用它组合策略模式——工厂负责造,策略负责算。
第 4 章开场:PizzaStore 把 new Pizza(...) 的分支抽成 SimplePizzaFactory,授权店复用。HF 随即指出它的软肋——加新品要改工厂,于是顺势升级成工厂方法。
class CashFactory { // 大话:促销算法工厂(C# 风格) static CashSuper create(String type) { switch (type) { case "rebate": return new CashRebate(0.8); // 打 8 折 case "return": return new CashReturn(300, 100); // 满 300 返 100 default: return new CashNormal(); } } } // HF 同款:SimplePizzaFactory——客户不 new 具体类,只问工厂要