抽象工厂模式:选择产品簇的实现

简介: 抽象工厂模式的本质是选择产品簇的实现

场景分析
(1)组装电脑中的场景问题
就是CPU对象与主板对象存在对应关系,需要相互匹配。简单工厂和工厂方法并没有解决对象之间关联关系问题,它们所关注的只是单个产品对象的创建。
image.png
(2)访问不同的数据库(抽象工厂模式和DAO)
DAO用于解决访问数据对象的问题(数据源不同、存储方式不同、访问方不同、厂商不同Oracle或MySQL),DAO层需要抽象和封装所有对数据的访问,DAO层承
担和数据仓库交互的职责。
DAO层存储实现方式不固定时,需要DAO支持多种存储实现方式,一般就要用抽象工厂模式来实现DAO。
image.png
定义及本质
定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。
本质:选择产品簇的实现。
结构示意图:
image.png

UML类图
image.png

调用时序图
image.png

优缺点
(1)优点
分离接口和实现:客户端通过抽象工厂创建需要的对象,从具体的产品实现中解耦。
切换产品簇方便:选择不同的工厂实现(==产品簇)。
(2)缺点
不易扩展新的产品:新增一类产品就需要修改抽象工厂;
类的层次复杂化

相关文章
|
8月前
|
存储 设计模式 算法
迭代器模式让你轻松驾驭复杂数据集合
迭代器模式是设计模式中的一种,旨在提供一种访问集合元素的方式,同时不暴露底层数据结构。其核心是抽离遍历集合的复杂性,实现一个统一的迭代接口,简化客户端与数据结构的交互。 该模式的目的是解决不同数据结构遍历的普遍需求,并应对直接暴露对象内部表示所带来的维护和扩展难题。迭代器模式通过封装遍历算法,减少冗余,提升代码抽象级别,对软件设计的清晰性和灵活性至关重要。 迭代器模式中的关键角色包括Iterator接口定义必要的遍历操作,ConcreteIterator实现具体的遍历逻辑,以及Aggregate接口表
83 0
迭代器模式让你轻松驾驭复杂数据集合
|
8月前
|
设计模式
耦合与内聚:软件设计中的黄金平衡
耦合与内聚:软件设计中的黄金平衡
|
SQL Oracle 关系型数据库
C#之三十九 抽象工厂模式
C#之三十九 抽象工厂模式
70 0
|
5月前
|
设计模式 存储 缓存
单例模式与工厂方法模式之间的差异
【8月更文挑战第24天】
59 0
|
存储 Java
Java面向对象的特征一:封装性
Java面向对象的特征一:封装性
82 0
想象的重要性(抽象工厂)
想象的重要性(抽象工厂)
64 0
|
设计模式 Java
Java设计模式七大原则-合成聚合复用原则
Java设计模式七大原则-合成聚合复用原则
104 0
|
Java
Java面向对象 特征二(继承性)详解
Java面向对象 特征二(继承性)详解
80 0
|
设计模式
面向对象方法-抽象
面向对象方法-抽象
|
存储 关系型数据库
软件设计原则SOLID+组合聚合+迪米特原则(附代码讲解)
软件设计原则SOLID+组合聚合+迪米特原则(附代码讲解)
90 0