首页 > 其他分享 >软件设计实验4:抽象工厂模式

软件设计实验4:抽象工厂模式

时间:2023-10-31 22:14:14浏览次数:35  
标签:Woman 软件设计 void System class 实验 抽象 public out

实验4:抽象工厂模式

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

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

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

 

[实验任务一]:人与肤色

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

 

实验要求:

1. 画出对应的类图;

 

2. 提交源代码;

  1. public interface Man {  
  2. public void makeM();  
  3. }  
  4. public class YellowMan implements Man {  
  5. public void makeM() {  
  6. System.out.println("黄男!");  
  7. }  
  8. }  
  9. public class WhiteMan implements Man {  
  10. public void makeM() {  
  11. System.out.println("白男!");  
  12. }  
  13. }  
  14. public class BlackMan implements Man {  
  15. @Override  
  16. public void makeM() {  
  17. System.out.println("黑男!");  
  18. }  
  19. }  
  20. public interface Woman {  
  21. public void makeW();  
  22. }  
  23. public class WhiteWoman implements Woman {  
  24. @Override  
  25. public void makeW() {  
  26. System.out.println("白女!");  
  27. }  
  28. }  
  29. public class BlackWoman implements Woman {  
  30. @Override  
  31. public void makeW() {  
  32. System.out.println("黑女!");  
  33. }  
  34. }  
  35. public class YellowWoman implements Woman {  
  36. public void makeW() {  
  37. System.out.println("黄女!");  
  38. }  
  39. }  
  40. public interface Color {  
  41. public Man produceMan();  
  42. public Woman produceWoman();  
  43. }  
  44. public class Yellow implements Color{  
  45. @Override  
  46. public Man produceMan() {  
  47. return new YellowMan();  
  48. }  
  49. @Override  
  50. public Woman produceWoman() {  
  51. return new YellowWoman();  
  52. }  
  53. }  
  54. public class Black implements Color{  
  55. @Override  
  56. public Man produceMan() {  
  57. return new BlackMan();  
  58. }  
  59. @Override  
  60. public Woman produceWoman() {  
  61. return new BlackWoman();  
  62. }  
  63. }  
  64. package test4;  
  65. /* 
  66. * 读取XML文件并根据存储在XML文件中的类名获取对应的对象 
  67. */  
  68. import javax.xml.parsers.*;  
  69. import org.w3c.dom.*;  
  70. import java.io.File;  
  71. public class XMLUtil {  
  72. @SuppressWarnings("deprecation")  
  73. public static Object getBean() {  
  74. try {  
  75. //创建DOM文档对象  
  76. DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();  
  77. DocumentBuilder builder = dFactory.newDocumentBuilder();  
  78. Document doc;  
  79. doc = builder.parse(new File("config.xml"));  
  80. //获取包含类名的文本节点  
  81. NodeList nl = doc.getElementsByTagName("className");  
  82. Node classNode = nl.item(0).getFirstChild();  
  83. String cName = classNode.getNodeValue();  
  84. System.out.println("类名:  "+ cName); //输出类名  
  85. //通过类名生成实例对象返回  
  86. Class c = Class.forName(cName);  
  87. Object obj = c.newInstance();  
  88. return obj;  
  89. catch (Exception e) {  
  90. e.printStackTrace();  
  91. return null;  
  92. }  
  93. }  
  94. }  
  95. public class Client {  
  96. public static void main(String[] args) {  
  97. try   
  98. {  
  99. Color color;  
  100. Man man;  
  101. Woman woman;  
  102. color=(Color)XMLUtil.getBean();  
  103. System.out.println(color);  
  104. woman=color.produceWoman();  
  105. woman.makeW();  
  106. man=color.produceMan();  
  107. man.makeM();  
  108. }catch(Exception e){  
  109. System.out.print(e.getMessage());  
  110. }  
  111. }  
  112. }  

 

 

3.注意编程规范。

标签:Woman,软件设计,void,System,class,实验,抽象,public,out
From: https://www.cnblogs.com/DREAM2021/p/17801693.html

相关文章

  • 软件设计实验5:建造者模式
    实验5:建造者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解建造者模式的动机,掌握该模式的结构;2、能够利用建造者模式解决实际问题。 [实验任务一]:计算机组装使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起......
  • 软件设计实验1:UML与面向对象程序设计原则
    实验1:UML与面向对象程序设计原则本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、掌握面向对象程序设计中类与类之间的关系以及对应的UML类图;2、理解面向对象程序设计原则。 [实验任务一]:UML复习阅读教材第一章复习UML,回答下述问题:面向对象程序设计中类与类的关......
  • 软件设计实验2:简单工厂模式
    实验2:简单工厂模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解简单工厂模式的动机,掌握该模式的结构;2、能够利用简单工厂模式解决实际问题。 [实验任务一]:女娲造人使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参......
  • 软件设计实验3:工厂方法模式
    实验3:工厂方法模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解工厂方法模式的动机,掌握该模式的结构;2、能够利用工厂方法模式解决实际问题。 [实验任务一]:加密算法目前常用的加密算法有DES(DataEncryptionStandard)和IDEA(InternationalDataEncryption......
  • 实验三
    test1.c1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);//函数声明8voidprint_spaces(intn);//函数声明9voidprint_......
  • 实验3
    实验任务1实验任务2.1实验任务2.2 实验任务3实验任务4实验任务5 实验任务6 ......
  • 实验3 c语言函数应用编程
    task11源代码1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);8voidprint_spaces(intn);9voidprint_blank_lines(intn)......
  • 实验3
    实验任务1#include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明int......
  • 软件设计-状态模式
    publicclass状态模式{publicstaticvoidmain(String[]args){Contextcontext=newContext();context.Request();context.Request();context.Request();//System.out.println(context.getState());context......
  • 实验三
    #include<stdio.h>#include<stdlib.h>#include<time.h>#include<windows.h>#defineN80voidprint_text(intline,intcol,chartext[]);//函数声明voidprint_spaces(intn);//函数声明voidprint_blank_lines(intn);//函数声明intmain()......