设计模式(七)抽象工厂模式
来源:互联网 发布:sqlserver时间格式化 编辑:程序博客网 时间:2024/04/30 18:22
抽象工厂模式:
kit模式,提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。
和工厂方法模式不同的是,抽象工厂模式的工厂方法创建的是一个产品族,每一个产品都位于某个产品等级结构中。
同样,4个角色:
(1)AbstractFactory抽象工厂:声明了一组用于创建一族产品的方法,每个方法对应一种产品。
(2)ConcreteFactory具体工厂:实现了在抽象工厂中声明的创建产品的方法,生成一组具体产品(不是一个产品对象实例),构成一个产品族。
(3)AbstractProduct抽象产品:为每种产品声明接口,抽象产品中声明了产品所具有的业务方法;
(4)ConcreteProduct具体产品:定义了具体工厂生产的具体产品对象,实现在抽象产品接口中声明的业务方法。
什么是产品族:比如相同颜色的正方形、矩形、三角形是一个产品族,不同颜色的正方形是一个产品等级结构,每一个颜色的形状对象都位于某个产品族,并属于某个产品等级结构。在抽象工厂模式,产品族是指有同一个工厂生产的,位于不同产品等级结构的一组产品,比如海尔电器工厂生产的海尔电视机、海尔电冰箱,海尔电视机位于电视机产品等级结构中,海尔电冰箱位于电冰箱产品等级结构中,海尔电视机、电冰箱构成了一个产品族。
总结:
1.优点
(1)隔离了具体类的生产,使得客户不需要知道什么被创建。只需要改变具体工厂的实例,就可以改变系统的行为。
(2)当一个产品族的多个对象被设计成一起工作时,能保证客户端始终只使用同一个产品族的对象。
(3)增加新的产品族很方便,无需修改已有系统,符合开闭原则。
2.缺点
(1)增加新的产品等级结构很麻烦,需要对原有系统进行较大修改,甚至修改抽象层代码,不符合开闭原则。
3.适用场景
(1)一个系统不依赖于产品类实例如何被创建、组合和表达的细节。
(2)系统有多于一个的产品族,每次只使用其中某一个产品族。
(3)属于同一个产品族的产品将在一起使用。
(4)产品等级结构稳定。
- 设计模式(七)抽象工厂模式
- 大话设计模式(七)抽象工厂模式
- 设计模式系列(七)简单工厂模式、工厂方法模式和抽象工厂模式对比
- 设计模式C++之七(AbstractFactory抽象工厂模式)
- 设计模式(抽象工厂)
- 设计模式(4)-抽象工厂模式
- 设计模式:抽象工厂模式(Python)
- 设计模式(JAVA)------抽象工厂模式
- 设计模式(三)---抽象工厂模式
- 抽象工厂模式---设计模式(好)
- 设计模式(3):抽象工厂模式
- 设计模式(三)--抽象工厂模式
- 设计模式(3):抽象工厂模式
- 设计模式------抽象工厂模式(AbstractFactoryPattern)
- 设计模式(二):抽象工厂模式
- c++设计模式(抽象工厂模式)
- 设计模式(三)---抽象工厂模式
- 设计模式(3):抽象工厂模式
- QT5(5)窗口布局
- 编写的好玩hangman轻松入门TDD
- Shiro 入门系列 二 (认证与Spring的整合)
- 【动态树】目录
- 位运算复习(1)
- 设计模式(七)抽象工厂模式
- 第五周—raptor之斐波那契数列
- Unicode下CString和char *之间的互相转换
- 【树链剖分】目录
- Caffe + ROS + OpenCV + Qt creator
- 以太网,IP、TCP、UDP数据包解析
- 水题
- 最小二乘法推到过程
- iOS 第三方优质库\框架\项目介绍