工厂方法作业
作业问题:
某软件公司欲开发一个数据格式转换工具,可以将不同数据源如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格式