目录
- 1. 抽象工厂模式
- 2. UML图
- 3. 代码示例
- 4. 总结
1. 抽象工厂模式
- 针对工厂方法模式无法创建一组相关或相互依赖对象的问题,引入了抽象工厂模式
- 抽象工厂模式的官方定义
是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。
敲黑板,画重点:

- 提供一个创建一组相关或相互依赖对象的接口:相对工厂方法模式,抽象工厂模式的抽象工厂定义了多个创建对象的接口
- 不同等级的产品:
- 不同类的产品,又叫不同等级的产品。
- 工厂方法模式中,只考虑同一等级产品的生产,只是同一等级的产品也有很多不同的型号
- 就像电子厂只生产游戏机,游戏机有多种类型:插卡的游戏机、插光盘的游戏机、便携式游戏机(玩俄罗斯方块的那种)
- 同族的产品
- 现实生活中,电子厂不止生产游戏机,还生产电视机、音箱等产品。
- 这些由一个工厂生产的不同等级的产品,被称为产品族
- 因此,同族的不同等级的产品,就是指一个工厂能生产多类产品,与前面的创建一组相关或相互依赖对象的接口呼应
- 以海尔和TCL两家公司为例,产品族和产品等级的示意图如下
总结起来:
- 抽象工厂模式中,工厂不再只生产一类产品,而是可以生产多类产品
- 也就是说,工厂可以支持多种类型的对象的创建
- 调用者无需指定对象类型(具体的类),就可以通过工厂类创建多种类型的对象
2. UML图
抽象工厂模式的UML图如下:
- 抽象工厂(Abstract Factory):定义了多个创建产品的接口,可以创建多个不同等级的产品
- 具体工厂(Abstract Factory):实现抽象工厂中的抽象方法,负责创建具体的产品
- 抽象产品(Product): 相对工厂方法模式,抽象工厂模式中的产品将是多种等级的。因此,一般会定义多个抽象产品
3. 代码示例
创建两个抽象产品类
public interface TV {
void play();
}
public interface AirConditioner {
void heat();
}
创建具体产品类
- 实现抽象产品接口,为海尔和TCL公司创建具体产品类
public class HaierTV implements TV{
@Override
public void play() {
System.out.println("海尔电视机,销量全国领先");
}
}
public class TCLTV implements TV{
@Override
public void play() {
System.out.println("TCL牌电视机,家家都在看的电视机");
}
}
public class HaierAirConditioner implements AirConditioner{
@Override
public void heat() {
System.out.println("海尔牌空调,制热效果好,省电又省心~");
}
}
public class TCLAirConditioner implements AirConditioner {
@Override
public void heat() {
System.out.println("TCL牌空调,制热效果杠杠的");
}
}
创建抽象工厂类
public interface AbstractFactory {
TV getTV();
AirConditioner getAirConditioner();
}
创建具体工厂类
- 为海尔和TCL两家公司,创建具体工厂类,实现具体产品的创建
public class HaierFactory implements AbstractFactory{
@Override
public TV getTV() {
return new HaierTV();
}
@Override
public AirConditioner getAirConditioner() {
return new HaierAirConditioner();
}
}
public class TCLFactory implements AbstractFactory{
@Override
public TV getTV() {
return new TCLTV();
}
@Override
public AirConditioner getAirConditioner() {
return new TCLAirConditioner();
}
}
4. 总结
4.1 抽象工厂模式的总结
- 创建属于不同操作系统的视窗构件,是抽象工厂模式最早的应用。
- 如 Java 的 AWT 中的 Button 和 Text 等构件,在 Windows 和 UNIX 中的本地实现是不同的。
适用场景:
- 需要创建的对象是一系列相关或相互依赖的产品族
- 不同环境,需要使用不同产品族(系统中有多个产品族,但每次只使用其中的某一族产品)
开闭原则的倾斜性
- 增加一个产品族,只需要增加一个新的工厂类,无需修改已有的工厂 —— 满足开闭原则
- 增加一个新等级的产品,抽象工厂和具体工厂都需要进行修改 —— 不满足开闭原则
- 这样的现象被称作:开闭原则的倾斜性
4.2 工厂模式的总结
简单工厂模式
- 从长期的编程习惯总结出来的简单工厂模式,需要调用者传入对象名称,才能为其创建指定的对象
- 新增对象类型时,需要修改已有代码,违背了开闭原则
工厂方法模式
- 每个工厂只负责创建一种类型的对象,是对简单工厂模式的升级改造
- 虽然遵守了开闭原则,但是容易工厂类过多,且不支持创建一组相关或相互依赖的对象的场景
抽象工厂模式
- 将一组相关或相互依赖的对象,抽象成产品族,每个工厂负责创建一个产品族
- 开闭原则的倾斜性:新增产品族,满足开闭原则;新增产品,不满足开闭原则
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
相关推荐:
ChatGPT的梯子:突破网络壁垒,畅享智能对话的全新体验,ai的音标1001ai的音标
SEO与网络推广机构:如何选择最适合你的数字营销合作伙伴,ai写作软件性价比高吗
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
“收录量为1”,打造数字化时代的独特竞争力,网站建设页面制作流程
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
AI助手推进:智能化时代的企业革命,ai改变图片颜色
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
SEO用户:如何为您的网站带来持续流量和转化,惠州网站推广哪个好
重生成AI:突破科技前沿,开启智能未来
SEM做得好可以取代SEO吗?浅析两者的异同与未来趋势,王道ai
自动写文章AI:高效创作工具,开启写作新纪元
用AI写文章,释放你的创作潜力!
SEO管家:为您的网站保驾护航的智能SEO助手,网站推广作用有哪些类型
SEO到底怎么做?揭秘从零到精通的完整SEO优化攻略,鸟瞰ai
AI热门软件,未来科技的钥匙
乘风SEO-引领企业互联网时代的腾飞之路,南昌b站关键词排名优化贵不贵
AI免费写文章:让创作变得轻松高效
Bing无法使用怎么办?解决方法及替代方案推荐!,ai文字设计教程
OpenAI账号申诉怎么办?全方位解析解决方案,ai写作免费公众号下载
SEO分类:从基础到进阶,全面解析SEO优化的关键要素,新建设网站排名
ChatGPT暂时不可用?如何高效应对并寻找最佳替代方案!,logo ai教程视频
互联网留痕:数字时代的隐形轨迹与自我管理,灯塔网站推广包年多少钱
SEO好吗?助力网站成功的关键之道,网站优化方案范文怎么写
AI自动帮写,轻松应对内容创作挑战,赋能写作新未来,嘿科技ai
AI生成文章免费工具,让创作变得轻松又高效,ai安心健
SEO武汉:如何提升武汉地区网站的搜索引擎排名,景区网站建设费用
ChatGPT免费版的限制:你需要了解的5大制约因素,Ai分解模型
AI网页效果生成:开启网站设计的新纪元,ai画线祥云
SEM+SEO:助力企业数字化营销的双剑合璧之道,ai头像丑
ChatGPT的VPN梯子:畅享全球互联网自由,打破地域限制,一直搜Ai
AI做文章:引领智能创作的未来
SEO符合:提升网站排名的秘诀,助力企业赢在搜索引擎优化的赛道,优化没续费 网站没了
seo适合看什么书,自学seo书籍推荐 ,ai少女 刻晴
ChatGPT故障:科技背后的秘密与应对策略,华为什么手机带ai功能
seo深度优化插件是什么,深度优化手机软件 ,ai的缩写
SEO非常:如何利用SEO提升网站排名与流量,助力品牌快速成长,绥化短视频营销推广
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
ChatGPT:引领人工智能对话新时代的智能助手,Ai shiang
用AI写文章查重率高吗?揭秘AI写作与查重检测的关系
ChatGPT网页版为什么不能用了?解析原因与解决办法,女人莫名其妙想ai
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
SEO调整,助力网站流量爆发式增长!,江都seo优化排名
SEO热词:提升网站排名的关键秘诀,一句话营销推广怎么写好
如何用AI写公众号文章?让创作更高效、更轻松
从零到一:网站历史的演变与未来趋势,肇庆市国外网站建设平台
SEO百度优化:让你的品牌在搜索引擎中脱颖而出,日照网站推广策划
SEO需要:如何提升网站排名,打造高效营销利器,seo怎么推广关键词
揭开“好的AI软件”背后的秘密:让生活和工作更智能的利器
英语日记AI生成:轻松提升英语水平的智能助手
如何选择适合你的AI工具?全面解析AI工具哪个好用