第3篇:工厂方法模式——把变化隔离到子类
第3篇工厂方法模式——把变化隔离到子类摘要简单工厂违反开闭原则怎么办工厂方法模式通过将创建逻辑下放到子类实现了零修改扩展。本文详解其实现、优缺点并指出其代价——类数量膨胀。本文是《Java 23 种设计模式从踩坑到精通》工厂模式长文的扩充短文第3篇帮助你碎片化掌握核心知识点。你有没有写过这样的代码// 抽象工厂publicinterfaceSenderFactory{SendercreateSender();}// 具体工厂publicclassSmsSenderFactoryimplementsSenderFactory{OverridepublicSendercreateSender(){returnnewSmsSender();}}publicclassEmailSenderFactoryimplementsSenderFactory{OverridepublicSendercreateSender(){returnnewEmailSender();}}简单工厂违反开闭原则怎么办工厂方法模式给出了优雅的答案不再用一个工厂类扛所有创建逻辑而是把“创建”抽象成接口让每个具体产品都有一个对应的具体工厂。客户端调用SenderFactoryfactorynewSmsSenderFactory();Sendersenderfactory.createSender();sender.send(你好工厂方法);新增产品时只需新增一个工厂子类无需修改任何现有代码——完全符合开闭原则。你的场景该不该用工厂方法判断标准是 → 用工厂方法否 → 用其他方式产品种类多、频繁新增✅❌需要遵循开闭原则✅❌产品种类少且稳定❌简单工厂就够了担心类数量膨胀❌考虑简单工厂一句话总结用类数量的膨胀换取零修改的扩展值得还是不值取决于产品变化的频率。完整长文入口本文是工厂模式扩充系列的第3篇。如果你想一次性阅读完整内容含UML、三种工厂对比、框架源码、面试追问等请查看原长文 《Java 23 种设计模式从踩坑到精通 | 工厂模式》 系列导航上一篇第2篇简单工厂模式——把if-else搬个家下一篇第4篇抽象工厂模式——产品族一键创建返回 《工厂模式·扩充系列》目录返回《Java 23种设计模式从踩坑到精通》总目录