ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java语言实现软件设计模式---抽象工厂模式(性别产品等级结构肤色产品族)

2021-09-23 23:05:37  阅读:192  来源: 互联网

标签:java package a004 模式 --- Override com public


一、题目要求

 

 

二、画出对应的类图

 

 

 

 

 

三、文件目录结构

 

 

 

 

 

 四、具体实现代码

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 }

 

测试结果

 

标签:java,package,a004,模式,---,Override,com,public
来源: https://www.cnblogs.com/rainbow-1/p/15327896.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有