工厂方法作业

作业问题:

某软件公司欲开发一个数据格式转换工具,可以将不同数据源如txt文件、数据库、Excel表格中的数据转换成XML格式。为了让系统具有更好的扩展性,在未来支持新类型的数据源,开发人员使用工厂方法模式设计该转换工具的核心类,客户端只需使用工厂类即可获得具体的转换类对象,再调用其相应方法实现数据转换操作。绘制该类图,并选择一种语言编程实现。

 

首先,画出UML类图:

图中,ConvertorCreator是抽象工厂接口,它声明了工厂方法getConvertor(),在其子类中实现该方法,用于创建具体的转换对象;Convertor是抽象产品接口,它声明了抽象数据转换方法transform(),在其子类中实现该方法,用于完成具体的数据转换操作。类DBConvertor,EXCELConvertor和TXTConvertor分别用于将数据库中的数据,EXCEL文件和txt文件中的数据转换为XML格式。

 

下面用java代码实现上图:

 1 //抽象工厂接口
 2 public interface ConvertorCreator {
 3     //创建具体的转换对象
 4     public Convertor getConvertor();
 5 }
 6 
 7 public class DBConvertorCreator implements ConvertorCreator {
 8     public Convertor getConvertor(){
 9         //数据库数据转换器
10         System.out.println("成功创建数据库数据转换器");
11         return new DBConvertor();
12     }
13 }
14 
15 public class EXCELConvertorCreator implements ConvertorCreator{
16     public Convertor getConvertor(){
17         //EXCEL数据转换器
18         System.out.println("成功创建EXCEL数据转换器");
19         return new EXCELConvertor();
20     }
21 }
22 
23 public class TXTConvertorCreator implements ConvertorCreator {
24     public Convertor getConvertor(){
25         //TXT数据转换器
26         System.out.println("成功创建TXT数据转换器");
27         return new TXTConvertor();
28     }
29 }
30 
31 //抽象产品接口
32 public interface Convertor {
33     //数据转换
34     public void transform();
35 }
36 
37 public class DBConvertor implements Convertor {
38     public void transform(){
39         //数据库数据转换为XML格式
40         System.out.println("成功将数据库数据转换为XML格式");
41     }
42 }
43 
44 public class EXCELConvertor implements Convertor {
45     public void transform(){
46         //EXCEL数据转换为XML格式
47         System.out.println("成功将EXCEL数据转换为XML格式");
48     }
49 }
50 
51 public class TXTConvertor implements Convertor {
52     public void transform(){
53         //TXT数据转换为XML格式
54         System.out.println("成功将TXT数据转换为XML格式");
55     }
56 }

 

 1 public class Client {
 2     public static void main(String[] args) {
 3         Convertor DBConvertor = new DBConvertor();
 4         DBConvertor.transform();
 5         Convertor EXCELConvertor = new EXCELConvertor();
 6         EXCELConvertor.transform();
 7         Convertor TXTConvertor = new TXTConvertor();
 8         TXTConvertor.transform();
 9     }
10 }
11 
12 // 成功将数据库数据转换为XML格式
13 //成功将EXCEL数据转换为XML格式
14 //成功将TXT数据转换为XML格式

 

 

posted @ 2020-03-20 11:32  王柯  阅读(769)  评论(0编辑  收藏  举报