目录
- 1. 工厂方法模式介绍
- 2. 工厂方法模式类图UML
- 3. 工厂方法模式角色说明
- 4. 代码实现
- 5. 工厂模式再探究
- 6. 优缺点
- 7. 应用场景
1. 工厂方法模式介绍
定义:工厂方法模式是对简单工厂模式进一步的抽象化,好处是可以使系统不修改原来代码的情况下引进新的产品,即满足开闭原则。定义一个用于创建对象接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类中。

2. 工厂方法模式类图UML
3. 工厂方法模式角色说明
抽象工厂(AbstractFactory):提供了创建产品的接口,调用方通过它访问具体工厂的工厂方法来创建产品
具体工厂(ConcreteFactory):实现了抽象工厂定义的方法,完成具体产品的创建
抽象产品(Product):定义了产品的规范,描述产品的主要特征和性能
具体产品(ConcreteProduct):实现了抽象产品的定义的方法,有具体工厂来创建产品,具体工厂和具体产品一一对应
4. 代码实现
工厂方法模式实现:
/**
* 抽象工厂:提供具体工厂的共有方法
*/
public interface Product {
public void show();
}
public class ConcreteProduct1 implements Product {
@Override
public void show() {
System.out.println("具体产品1展示...");
}
}
public class ConcreateProduct2 implements Product {
@Override
public void show() {
System.out.println("具体产品2展示...");
}
}
/**
* 抽象工厂
*/
public interface AbstractFactory {
public Product createProduct();
}
/**
* 具体工厂1产生具体产品1
*/
public class ConcreteFactory1 implements AbstractFactory {
@Override
public Product createProduct() {
ConcreteProduct1 concreteProduct1 = new ConcreteProduct1();
System.out.println("具体工厂1创建具体产品1...");
return concreteProduct1;
}
public class ConcreteFactory2 implements AbstractFactory {
@Override
public Product createProduct() {
System.out.println("具体工厂2产生具体产品2...");
return new ConcreateProduct2();
}
}
调用方法:
//获取具体产品1
Product product = new ConcreteFactory1().createProduct();
product.show();
Product product1 = new ConcreteFactory2().createProduct();
product1.show();
使用步骤:
- 创建抽象产品类,定义产品的公共方法
- 创建具体产品类(实现抽象产品接口),定义生成的具体产品
- 创建抽象工厂类,定义具体工厂的公共接口
- 创建具体工厂类,定义创建对应具体产品实例的方法
- 调用方调用具体的工厂类的方法,从而创建不同具体产品的实例
5. 工厂模式再探究
解决问题:解决了简单工厂类新增产品需要修改工厂类的方法逻辑问题,即为别开闭原则。
将具体的产品创建退出到工厂类的子类(具体工厂),此时工厂类不再负责所有产品的创建,而是给出具体工厂必须实现的接口,这样工厂方法在添加新的产品的时候,就不需要修改工厂类的逻辑,而是添加了新的工厂子类,符合开闭原则。
6. 优缺点
优点:
- 灵活性强,对于新产品的创建,只需要多写一个对应的工厂类
- 用户只需要指导工厂的名称就可以获得所要的产品,不需要指导产品具体创建过程
缺点:
- 类的个数容易过多,增加了复杂度
- 每一个工厂只能生产一种产品,次弊端可以使用抽象工厂模式解决
7. 应用场景
客户只关注创建产品的工厂名,不需要知道具体的产品名称
相关推荐:
SEO网:让你的数字营销更加精准高效,开启网络引流新时代,丰县互联网网站推广优势
AI网页效果生成:开启网站设计的新纪元,ai画线祥云
Chato1免费么?揭开这款AI聊天机器人的神秘面纱,交个朋友ai写作
SEO教研:数字营销新趋势,提升网站流量与转化率的关键,齐鲁证券网站建设
seo要公司什么资源,做seo需要用到什么软件 ,ai明星换了
SEO定价策略:如何根据企业需求定制最佳价格方案,教育培训抖音营销推广
seo种草什么意思,seo yoo na ,三维地震反演AI
怎么用AI写出令人惊叹的文章?轻松搞定写作难题!
GPT怎么收费?揭秘AI技术的定价与价值,ai报考高考
SEO应该如何提升网站流量与排名?揭秘成功的SEO策略,肺炎疫苗推广营销
ChatGDP人工智能:未来科技赋能企业与个人的智能变革,如何用AI绘制人体
ChatGPT4账号共享-让AI助力你的学习与工作,轻松提升效率,ai巨无霸
SEO有意:如何通过优化策略提升网站排名与流量,天津政府智慧网站建设
什么是seo网站推广,什么是seo网站推广 ,ai酷男人
SEO开发:数字营销的核心驱动力,园区网站建设
ChatGPT连了外网也登不了?如何解决这一问题,重新畅享AI助力!,ai少女大瓜
seo需要保持什么心态,seo的要求 ,ai83562
打造内容创作新高度:文章扩写AI的革命性优势
文章疑似AI生成怎么办?如何辨别并应对AI生成文章的挑战
ChatGPT付款被拒?如何应对与解决常见支付问题,掉包ai
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
ChatGPT:引领智能对话新潮流,助力未来科技,ai写作免费议论文
ChatGPT网页版内容显示不全的解决方案:如何轻松解决问题?,课件ai
SEO差价如何用SEO优化帮助企业实现成本与效益的完美平衡,盐城seo收费贵吗
SOE优化:让你的网站轻松登顶,流量激增的秘密武器,广西网站建设存在问题
“扩写AI”-引领写作革命,开启智能创作新时代,dede seo 标题如何填写
产品经理seo是什么,产品经理seo是什么意思 ,ai政府公文写作 软件
ChatGPT恢复正常使用时间,提升你的工作与生活效率,联想电脑AI0510
Goanno跨级借鉴:推动创新与提升效率的秘密武器,崇明区智能ai艾灸费用
什么是seo寄生虫,寄生虫seo原理 ,AI 疫
seo该从什么开始,seo是什么时候开始的 ,ai写作免费英文怎么说
AI人工智能生成文章:开启写作新时代
ChatGPT360:全方位提升你的工作与生活效率,ai72787
AI免费工具:提升效率与创意的秘密武器
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
什么是蜘蛛弛?揭秘这个SEO优化背后的神秘工具,南沙seo优化排名价格
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
SEO组织:让您的网站流量倍增的秘密武器,seo 绩效标准
优化服务网-提升客户体验,打造全方位智慧服务平台,东莞网站建设员招聘信息
AI提取文章重要内容:让信息抓取更高效、更精准,松鼠ai 教学
亚马逊的seo是什么阿,亚马逊seo项目 ,中考用ai写作会判0分吗
SEO优化基础:让你的网站脱颖而出的秘密武器,模仿猫ai
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
为什么说seo这么重要,seo重要吗 ,ai19920403
AI免费文章解读:智能写作新篇章,小店AI
AI一键生成原创文章,让创作更高效更轻松!
AI助手推进:智能化时代的企业革命,ai改变图片颜色
互联网时代的“搜索截流”新玩法:如何抓住流量红利,甘孜做优化网站软件
如何用AI改文章,让写作更高效、精准,提升内容质量