登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
1
2
/ 2 页
下一页
返回列表
首页
›
业界区
›
业界
›
抽象工厂模式的运用
抽象工厂模式的运用
[ 复制链接 ]
廖彗云
2025-6-6 09:38:28
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
一、案例背景
计算机包含内存(RAM),CPU 等硬件设备,根据如图所示的“产品等级结构-产品族示意图”,使用抽象工厂模式实现计算机设备创建过程并绘制类图
二、实现步骤
根据题意,使用抽象工厂模式并画出类图,类图中应包含一个抽象工厂类 AbstractFactory,PcFactory 和 MacFactory 两个具体工厂,CPU,RAM 两个抽象产品类,PcCPU,MacCPU,PcRAM,MacRAM 四个具体产品类。## 根据题意,使用抽象工厂模式并画出类图,类图中应包含一个抽象工厂类 AbstractFactory,PcFactory 和 MacFactory 两个具体工厂,CPU,RAM 两个抽象产品类,PcCPU,MacCPU,PcRAM,MacRAM 四个具体产品类。
根据类图,实现上述类的具体代码以及用户类 Client 和辅助类 XMLUtil 以实现通过 XML 文件来制造不同的产品
更改 XML 中的属性,观察用户类是否能使用不同的产品
三、实验结果
项目UML类图,如下:
2. 项目结构:
3. 详细代码:
抽象工厂类
public abstract class AbstractFactory {
public abstract Cpu createCpu();
public abstract Ram createRam();
}
复制代码
抽象产品类
CPU类:
public abstract class Cpu {
public void playCpu(){
System.out.println("CPU!!!");
}
}
RAM类:
public abstract class Ram {
public void playRam(){
System.out.println("RAM!!!");
}
}
复制代码
具体工厂类
PcFactory类:
public class PcFactory extends AbstractFactory {
@Override
public Cpu createCpu() {
System.out.println("2020006924使用Pc工厂生产CPU");
return new PcCpu();
}
@Override
public Ram createRam() {
System.out.println("2020006924使用Pc工厂生产RAM");
return new PcRam();
}
MacFactory
public class MacFactory extends AbstractFactory {
@Override
public Cpu createCpu() {
System.out.println("2020006924在使用MacFactory生产CPU");
return new MacCpu();
}
@Override
public Ram createRam() {
System.out.println("2020006924在使用MacFactory生产RAM");
return new MacRam();
}
}
复制代码
具体产品类
PcCpu类,如下:
public class PcCpu extends Cpu {
@Override
public void playCpu() {
System.out.println("!!PcCPU!!");
}
}
PcRam类,如下:
public class PcRam extends Ram {
@Override
public void playRam() {
System.out.println("!!PcRAM!!");
}
}
MacCpu类,如下:
public class MacCpu extends Cpu {
@Override
public void playCpu() {
System.out.println("!!!MacCPU!!!");
}
}
MacRam类,如下:
public class MacRam extends Ram {
@Override
public void playRam() {
System.out.println("!!!MacRAM!!!");
}
}
复制代码
配置文件config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<className>PcFactory</className>
</config>
复制代码
XMLUtil类
public class XMLUtil
{
//该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象
public static Object getBean()
{
try
{
//创建文档对象
DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dFactory.newDocumentBuilder();
Document doc;
doc = builder.parse(new File("config.xml"));
//获取包含类名的文本节点
NodeList nl = doc.getElementsByTagName("className");
Node classNode=nl.item(0).getFirstChild();
String cName=classNode.getNodeValue();
//通过类名生成实例对象并将其返回
Class c=Class.forName(cName);
Object obj=c.newInstance();
return obj;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
}
复制代码
客户类
public class Client {
public static void main(String[] args) {
try{
AbstractFactory factory = (AbstractFactory) XMLUtil.getBean();
Cpu cpu = factory.createCpu();
Ram ram = factory.createRam();
cpu.playCpu();
ram.playRam();
}catch (Exception e){
System.out.println(e.getMessage());
}
}
}
复制代码
运行结果
案例总结
抽象工厂模式主要适用于:
一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节
系统中有多于一个的产品族,但每次只使用其中某一产品族
属于同一个产品族的产品将在一起使用,这一约束必须在系统的设计中体现出来
产品等级结构稳定,在设计完成之后不会向系统中增加新的产品等级结构或者删除已有的产品等级结构
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
抽象
工厂
模式
运用
相关帖子
1、SEATA分布式事务——XA模式
1、SEATA分布式事务——XA模式
1、SEATA分布式事务——XA模式
1、SEATA分布式事务——XA模式
1、SEATA分布式事务——XA模式
1、SEATA分布式事务——XA模式
1、SEATA分布式事务——XA模式
1、SEATA分布式事务——XA模式
笔记:WPF MVVM 模式下通过消息机制获取自定义对话框数据
2、SEATA分布式事务——AT模式
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
1、SEATA分布式事务——XA模式
0
507
染罕习
2026-03-28
业界
1、SEATA分布式事务——XA模式
0
489
刎唇
2026-03-28
业界
1、SEATA分布式事务——XA模式
0
212
闰咄阅
2026-03-28
业界
1、SEATA分布式事务——XA模式
0
417
泥地锚
2026-03-28
业界
1、SEATA分布式事务——XA模式
0
562
睁扼妤
2026-03-28
业界
1、SEATA分布式事务——XA模式
0
273
荪俗
2026-03-28
业界
1、SEATA分布式事务——XA模式
0
584
吞脚
2026-03-28
业界
1、SEATA分布式事务——XA模式
0
963
能杜孱
2026-03-28
安全
笔记:WPF MVVM 模式下通过消息机制获取自定义对话框数据
0
435
锑砖
2026-03-28
安全
2、SEATA分布式事务——AT模式
0
9
申倩语
2026-03-30
回复
(25)
铜坠匍
2025-11-5 04:48:10
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享
讥慰捷
2025-12-9 02:59:02
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
澹台忆然
2025-12-10 18:51:07
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢分享,试用一下
史华乐
2025-12-11 16:06:42
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
啦汇
2025-12-20 16:25:57
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
谢谢楼主提供!
高小雨
2026-1-14 23:43:42
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前排留名,哈哈哈
汪玉珂
2026-1-17 12:01:34
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
懂技术并乐意极积无私分享的人越来越少。珍惜
靛尊
2026-1-18 11:05:34
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
很好很强大 我过来先占个楼 待编辑
均浇
2026-1-21 05:57:21
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
后沛若
2026-1-21 11:35:31
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
用心讨论,共获提升!
姚梨素
2026-1-23 04:29:18
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
谢谢分享,试用一下
崔瑜然
2026-1-24 03:01:48
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
懂技术并乐意极积无私分享的人越来越少。珍惜
古修蟑
2026-1-27 03:46:38
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
懵崭
2026-1-27 06:53:20
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
厂潺
2026-1-29 08:38:49
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
喜欢鼓捣这些软件,现在用得少,谢谢分享!
威割
2026-1-31 17:00:42
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
强怀梅
2026-2-7 05:32:53
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
这个有用。
滑清怡
2026-2-8 02:06:22
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
热心回复!
蚬蕞遂
2026-2-11 14:06:31
回复
使用道具
举报
照妖镜
程序园永久vip申请,无限下载程序园所有程序/软件/数据/等
喜欢鼓捣这些软件,现在用得少,谢谢分享!
下一页 »
1
2
/ 2 页
下一页
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
廖彗云
2026-2-11 14:06:31
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991125
anyue1937
9994892
kk14977
6845359
4
xiangqian
638210
5
神泱
9522
6
韶又彤
9916
7
宋子
9878
8
荪俗
9020
9
闰咄阅
9997
10
刎唇
9999
查看更多
今日好文热榜
586
Qt 技巧笔记(十四):QTableWidget 表格组
263
【JavaScript高级编程】拆解函数流水线 上
446
Claude 绝密模型泄露!Sora 关停、AI 工具
391
P10387 [蓝桥杯 2024 省 A] 训练士兵
114
电容是什么?一个“快充快放”的微型充电宝
948
做了一个网页天气可视化 2
698
Redis命令处理机制源码探究
727
读2025世界前沿技术发展报告27核力量
3
读2025世界前沿技术发展报告27核力量
4
读2025世界前沿技术发展报告27核力量
4
读2025世界前沿技术发展报告27核力量
3
读2025世界前沿技术发展报告27核力量
3
读2025世界前沿技术发展报告27核力量
3
Claude 绝密模型泄露!Sora 关停、AI 工具
3
做了一个网页天气可视化 2
3
做了一个网页天气可视化 2
3
Redis命令处理机制源码探究
3
【JavaScript高级编程】拆解函数流水线 上
3
Claude 绝密模型泄露!Sora 关停、AI 工具
3
Claude 绝密模型泄露!Sora 关停、AI 工具