当前位置: 首页 > news >正文

设计模式--抽象工厂模式

实验4:抽象工厂模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解抽象工厂模式的动机,掌握该模式的结构;

2、能够利用抽象工厂模式解决实际问题。

[实验任务]:人与肤色

使用抽象工厂模式,完成下述产品等级结构:

类图

运行效果

源代码

public class BlackFactory implements PeopleFactory
{@Overridepublic Man produceMan(){return new BlackMan();}@Overridepublic Woman produceWoman(){return new BlackWoman();}
}public class BlackMan implements Man
{@Overridepublic void show(){System.out.println("一个黑种男人");}
}public class BlackWoman implements Woman
{@Overridepublic void show(){System.out.println("一个黑种女人");}
}public class Client
{public static void main(String[] args){try{PeopleFactory factory;Man man;Woman woman;//根据xml配置文件动态实例对象factory = (PeopleFactory) XMLUtil.getBean();man = factory.produceMan();man.show();woman = factory.produceWoman();woman.show();}catch (Exception e){System.out.println(e.getMessage());}}
}public interface Man
{void show();
}public interface PeopleFactory
{Man produceMan();Woman produceWoman();
}public class WhiteFactory implements PeopleFactory
{@Overridepublic Man produceMan(){return new WhiteMan();}@Overridepublic Woman produceWoman(){return new WhiteWoman();}
}public class WhiteMan implements Man
{@Overridepublic void show(){System.out.println("一个白种男人");}
}public class WhiteWoman implements Woman
{@Overridepublic void show(){System.out.println("一个白种女人");}
}public interface Woman
{void show();
}import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.File;public class XMLUtil
{public static Object getBean(){try{//创建DOM文档对象DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = dFactory.newDocumentBuilder();Document doc = builder.parse(new File("src/main/resources/config4.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 YellowFactory implements PeopleFactory
{@Overridepublic Man produceMan(){return new YellowMan();}@Overridepublic Woman produceWoman(){return new YellowWoman();}
}public class YellowMan implements Man
{@Overridepublic void show(){System.out.println("一个黄种男人");}
}public class YellowWoman implements Woman
{@Overridepublic void show(){System.out.println("一个黄种女人");}
}

config4.xml

<?xml version="1.0" encoding="UTF-8"?>
<config><className>Tutorial_4.YellowFactory</className>
</config>

http://www.lryc.cn/news/267665.html

相关文章:

  • 浅析海博深造
  • 【Hive_05】企业调优1(资源配置、explain、join优化)
  • synchronized
  • Vue在页面上添加水印
  • SQL server 数据库练习题及答案(练习2)
  • minicube搭建golang容器服务
  • 图片批量处理:图片批量缩放,高效调整尺寸的技巧
  • 直接插入排序【从0-1学数据结构】
  • C++/CLI——1简介
  • C#实现串口通讯
  • NLP论文阅读记录 - 以大语言模型为参考学习总结
  • 前端---资源路径
  • 【2024考研】心情记录
  • MySQL数据库日志管理和数据的备份及恢复
  • node-schedule nodejs定时提醒(并判断段是否是工作日)
  • LeetCode 75| 前缀和
  • 智能,轻量,高效的爬虫工具 (爬虫宝第一代), HSpider
  • IDEA Maven Helper插件 解决jar冲突
  • 装饰 Web3 项目的用户交互界面(Web3项目二实战之四)
  • 【数据库系统概论】第3章-关系数据库标准语言SQL(3)
  • 理解io/nio/netty
  • 旅游品牌网站搭建的作用是什么
  • Linux操作系统——进程(五)环境变量
  • 西门子博途怎么使用PID_Compact做pid调试
  • 结构型模式 | 适配器模式
  • 基于Python的车牌识别系统实现
  • 时间序列预测模型介绍及使用经验总结
  • Docker知识总结
  • 算法训练营Day25
  • docker笔记2-docker 容器