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

实验4:抽象工厂模式

时间:2023-11-24 21:46:47浏览次数:40  
标签:package class sjms 工厂 实验 Override 抽象 com public

软件设计                  石家庄铁道大学信息学院

 

实验4:抽象工厂模式

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

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

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

 

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

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

 

实验要求:

1. 画出对应的类图;

 

 

2. 提交源代码;

运行截图如下

 

 

源代码

package com.sjms;  
public interface AbstractFactory {  
public Man produceMan();  
public Woman produceWomen();  
}  
package com.sjms;  
public class BlackHuman implements AbstractFactory{  
@Override  
public Man produceMan() {  
return new BlackMan();  
}  
@Override  
public Woman produceWomen() {  
return new BlackWoman();  
}  
}  
package com.sjms;  
public class WriteHuman implements AbstractFactory{  
@Override  
public Man produceMan() {  
return new WriteMan();  
}  
@Override  
public Woman produceWomen() {  
return new WriteWoman();  
}  
}
package com.sjms;  
public class YellowHuman implements AbstractFactory{  
@Override  
public Man produceMan() {  
return new YellowMan();  
}  
@Override  
public Woman produceWomen() {  
return new YellowWoman();  
}  
} 
package com.sjms;  
public interface Man {  
public void play();  
}  
package com.sjms;  
public interface Woman {  
public void play();  
}  
package com.sjms;  
public class BlackMan implements Man{  
@Override  
public void play() {  
System.out.println("我是黑种男人!");  
}  
}  
package com.sjms;  
public class BlackWoman implements Woman{  
@Override  
public void play() {  
System.out.println("我是黑种女人!");  
}  
}  
package com.sjms;  
public class WriteMan implements Man {  
@Override  
public void play() {  
System.out.println("我是白种男人!");  
}  
} 
package com.sjms;  
public class WriteWoman implements Woman{  
@Override  
public void play() {  
System.out.println("我是白种女人!");  
}  
}  
package com.sjms;  
public class YellowMan implements Man{  
public void play()  
{  
System.out.println("我是黄种男人!");  
}  
}  
package com.sjms;  
public class YellowWoman implements Woman{  
@Override  
public void play() {  
System.out.println("我是黄种女人!");  
}  
}  
package com.sjms.Util;  
import org.w3c.dom.*;  
import javax.xml.parsers.*;  
import java.io.File;  
//工具类  
public class XMLUtil {  
//生成配置文件中一个名字的实例对象  
public static Object getBean(){  
try {  
//创建DOM对象  
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
//文件解析器--由它读配置文件  
DocumentBuilder builder = factory.newDocumentBuilder();  
Document doc;  
//用磁盘绝对路径表示配置文件,写你的config.xml的绝对路径  
doc = builder.parse(new File("D:\\JAVA\\CODE\\rjgz\\a1\\t5\\src\\main\\java\\com\\sjms\\Util\\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;  
}  
}  
}  
package com.sjms;  
import com.sjms.Util.XMLUtil;  
public class Client  
{  
public static void main(String args[])  
{  
try  
{  
AbstractFactory factory;  
Man m;  
Woman w;  
factory=(AbstractFactory) XMLUtil.getBean();  
m=factory.produceMan();  
m.play();  
w=factory.produceWomen();  
w.play();  
}  
catch(Exception e)  
{  
System.out.println(e.getMessage());  
}  
}  
}  

  

标签:package,class,sjms,工厂,实验,Override,抽象,com,public
From: https://www.cnblogs.com/130-gzh/p/17854814.html

相关文章

  • 实验2:简单工厂模式
    软件设计                 石家庄铁道大学信息学院 实验2:简单工厂模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解简单工厂模式的动机,掌握该模式的结构;2、能够利用简单工厂模式解决实际问题。 [实验任务一]:女娲造人使用简单工厂模......
  • 实验3:工厂方法模式
    实验3:工厂方法模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解工厂方法模式的动机,掌握该模式的结构;2、能够利用工厂方法模式解决实际问题。 [实验任务一]:加密算法目前常用的加密算法有DES(DataEncryptionStandard)和IDEA(InternationalDataEncryption......
  • 实验1:UML与面向对象程序设计原则
    实验1:UML与面向对象程序设计原则本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、掌握面向对象程序设计中类与类之间的关系以及对应的UML类图;2、理解面向对象程序设计原则。 [实验任务一]:UML复习阅读教材第一章复习UML,回答下述问题:面向对象程序设计中类与类的关......
  • 洛谷P3161 [CQOI2012] 模拟工厂题解
    P3161[CQOI2012]模拟工厂题解。题目其实发现这是一道状压,发现这道题是一道数学题,其实就很简单了。对于每一次的订单我们可以设:\(time\)为距离下一个订单的时间。\(num\)为这个订单要生产的数量。\(x\)为生产能力。\(y\)的时间可以用来提高工厂的生产力。那我们就可以得......
  • Java实验报告五
    实验五实验名称:文件与I/O流实验目的:掌握文件与输入输出流的使用。实验时间:(2学时)实验类型:验证型实验内容:1.创建类:FindFile.java,遍历当前目录,打印目录中文件名称,目录打印”isDirectory”,文件打印“isfile”。修改程序打印当前目录及子目录信息。提示:当前目录名用......
  • Java实验报告
    实验一实验名称:JAVA中循环结构实验目的:熟悉循环结构,熟悉JAVA类的定义以及参数的传递。实验时间:(2学时)实验类型:验证型实验内容:(1)金字塔:Pyramid.java在屏幕上显示一个由星型符号“*”组成的金字塔图案,要求用户设置金字塔的高度,程序能根据用户设置的高度打印金字塔,......
  • Android 抽象工厂模式
    文章目录1、抽象工厂模式介绍2、抽象工厂模式的定义3、抽象工厂模式的使用场景4、抽象工厂模式的简单实现5、小结1、抽象工厂模式介绍抽象工厂模式也是创建型模式之一,抽象工厂模式起源于对不同操作系统的图形化解决方案,如不同操作系统的按钮和文本框控件及其实现。2、抽象工厂模......
  • Android 工厂方法模式
    文章目录1、工厂方法模式介绍2、工厂方法模式的定义3、使用场景4、模式的简单实现1、工厂方法模式介绍工厂方法模式(FactoryPattern),是创建型设计模式之一。工厂方法模式是一个结构比较简单的模式。2、工厂方法模式的定义就是一个用于创建对象的接口,让子类来决定实体化那个类。3......
  • 大数据实验(HBase基础操作)
    (一)Hadoop提供的HBaseShell命令完成任务要想将这些编码显示为中文,我们需要在get命令后添加一个属性:{FORMATTER=>'toString'}  (1)列出hbase所有表信息  (2)打印表的所有数据(3)添加、删除指定列族或列(4)清空指定表的数据(先禁用表在清空)(5)统计行数 (二)HBase数据库操......
  • 实验1-2
    实验1-2如题:思路:使用动态规划的思想(DP思路,即一个大一点规模的问题可以被拆解为更小的,更容易解决的问题)首先,定义一个数组dp,用来存储每个数的分解式个数。dp[i]表示当前数i的不同分解式的个数。接下来,从数2开始循环,逐个计算每个数的分解式个数。dp[i]=0,防止数组越界......