一、题目要求
二、画出对应的类图
三、文件目录结构
四、具体实现代码
Black.java
1 package com.a004;
2
3 public class Black implements Color{
4 @Override
5 public Man produceMan() {
6 return new BlackMan();
7 }
8
9 @Override
10 public Woman produceWoman() {
11 return new BlackWoman();
12 }
13
BlackMan.java
1 package com.a004;
2
3 public class BlackMan implements Man{
4 @Override
5 public void play(){
6 System.out.println("我是黑种男人!");
7 }
8
BlackWoman.java
1 package com.a004;
2
3 public class BlackWoman implements Woman {
4
5 @Override
6 public void play() {
7 System.out.println("我是黑种女人!");
8 }
9
Color.java
1 package com.a004;
2
3 public interface Color {
4 public Man produceMan();
5 public Woman produceWoman();
6
Yellow.java
1 package com.a004;
2
3 public class Yellow implements Color{
4 @Override
5 public Man produceMan() {
6 return new YellowMan();
7 }
8
9 @Override
10 public Woman produceWoman() {
11 return new YellowWoman();
12 }
13
White.java
1 package com.a004;
2
3 public class White implements Color {
4 @Override
5 public Man produceMan() {
6 return new WhiteMan();
7 }
8
9 @Override
10 public Woman produceWoman() {
11 return new WhiteWoman();
12 }
13
Man.java
1 package com.a004;
2
3 public interface Man {
4 public void play();
5
WhiteMan.java
1 package com.a004;
2
3 public class WhiteMan implements Man {
4 @Override
5 public void play() {
6 System.out.println("我是白种男人!");
7 }
8
YellowMan.java
1 package com.a004;
2
3 public class YellowMan implements Man{
4 @Override
5 public void play() {
6 System.out.println("我是黄种男人!");
7 }
8
Woman.java
1 package com.a004;
2
3 public interface Woman {
4
5 public void play() ;
6
WhiteWoman.java
1 package com.a004;
2
3 public class WhiteWoman implements Woman {
4 @Override
5 public void play() {
6 System.out.println("我是白种女人!");
7 }
8
YellowWoman.java
1 package com.a004;
2
3 public class YellowWoman implements Woman {
4 @Override
5 public void play() {
6 System.out.println("我是黄种女人!");
7 }
8
五、测试代码以及配置代码
XMLUtil.java
1 package com.a004;
2 import javax.xml.parsers.*;
3 import org.w3c.dom.*;
4 import org.xml.sax.SAXException;
5 import java.io.File;
6 public class XMLUtil {
7 public static Object getBean() {
8 try {
9 //创建DOM文档对象
10 DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
11 DocumentBuilder builder = dFactory.newDocumentBuilder();
12 Document doc;
13 doc = builder.parse(new File("config.xml"));
14 //获取包含类名的文本节点
15 NodeList nl = doc.getElementsByTagName("className");
16 Node classNode = nl.item(0).getFirstChild();
17 String cName = classNode.getNodeValue();
18 System.out.println("类名: "+ cName); //输出类名
19 //通过类名生成实例对象返回
20
21 Object obj = null;
22 try {
23 Class c =Class.forName("com.a004."+cName);
24 obj = c.newInstance();
25 } catch (ClassNotFoundException e) {
26 System.out.println("ClassNotFoundException");
27 e.printStackTrace();
28 } catch (InstantiationException e) {
29 System.out.println("InstantiationException");
30 e.printStackTrace();
31 } catch (IllegalAccessException e) {
32 System.out.println("IllegalAccessException");
33 e.printStackTrace();
34 }
35 return obj;
36 } catch (Exception e) {
37 e.printStackTrace();
38 return null;
39 }
40 }
41
config.xml
1 <?xml version = "1.0"?>
2 <config>
3 <className>Black</className>
4 </config>
Client.java
1 package com.a004;
2 public class Client {
3 public static void main(String[] args) {
4 Color color;
5 Man man;
6 Woman woman;
7 color=(Color) XMLUtil.getBean();
8 // color=new White();
9 woman=color.produceWoman();
10 woman.play();
11 man=color.produceMan();
12 man.play();
13 }
14
测试结果
好看请赞,养成习惯 :) ,作者:靠谱杨
关于笔者:我可能不是天才,但我会努力成为人才。
更多日常分享尽在我的VX公众号:小杨的挨踢IT生活