Lazy loaded image
技术分享
🏭大话设计模式系列(二)-抽象工厂模式
字数 1066阅读时长 3 分钟
2025-2-8
2025-2-8
type
status
date
slug
summary
tags
category
icon
password
notion image

小明的家具工厂

小明最近接到了一个有趣的项目 - 开发一款家具工厂模拟器。这个项目听起来简单,但实际上暗藏玄机。
项目要求模拟一个能够生产各种风格家具的工厂。比如说,一位客户想要一套现代风格的家具,包括椅子、沙发和咖啡桌;另一位客户则钟情于维多利亚风格的家具。每种风格的家具都有其独特的设计特点:现代风格简约时尚,维多利亚风格则富丽堂皇。
notion image
小明很快就发现,如果为每种家具的每种风格都写独立的代码,不仅代码量会爆炸,而且后期维护起来会特别困难。比如,要是以后需要添加新的家具风格,或者新的家具类型,就需要修改大量代码。
notion image
正当小明一筹莫展的时候,他想到了设计模式中的"抽象工厂模式"。这个模式简直就是为这种情况量身定做的!让我们来看看如何用抽象工厂模式来优雅地解决这个问题。

代码实现

首先,我们需要为每种家具定义接口:
接下来,我们实现现代风格的具体产品:
然后是维多利亚风格的具体产品:
最后,实现具体的工厂:
使用示例:

总结

通过抽象工厂模式,我们优雅地解决了家具工厂的问题:
  • 实现了不同风格家具的统一创建接口
  • 各个具体产品之间完全解耦
  • 新增家具风格只需要实现对应的工厂和产品类
  • 符合开闭原则,对扩展开放,对修改关闭
这个设计不仅让代码结构清晰,而且为后续的功能扩展提供了便利。比如,如果要添加新的家具风格(如装饰风艺术),只需要实现对应的具体工厂和产品类即可,无需修改现有代码。
 
上一篇
大话设计模式系列(三)-单例模式
下一篇
大话设计模式系列(一)-简单工厂模式

评论
Loading...