设计模式 -- 抽象工厂模式
抽象工厂模式是一种创建型设计模式,它提供了一种方式来封装一组具有共同主题的独立工厂,而不需要指定它们的具体类
定义
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类
结构
- 抽象工厂(AbstractFactory): 声明创建 抽象产品对象的接口
- 具体工厂(ConcreteFactory): 实现创建具体产品对象的操作
- 抽象产品(AbstractProduct): 为一类产品对象声明接口
- 具体产品(ConcreteProduct): 定义将被具体工厂创建的产品对象
模式优点
- 隔离具体类:客户端只与抽象接口交互,不依赖具体实现
- 易于交换产品系列:只需改变具体工厂即可切换整个产品系列
- 保证产品兼容性:工厂创建的产品都是设计为一起工作的
- 符合开闭原则:新增产品系列时无需修改已有代码
模式缺点
- 扩展新产品种类困难:需要修改抽象工厂接口及所有具体工厂
- 增加了系统复杂性:引入了许多额外的类和接口