需求:
目前有一个订单系统,需要接收N个客户的订单信息,目前对方只能提供一个CSV格式的文档(不能用Webservice)。且每个客户生成的文档格式不同。现需要对这几个订单文件进行接收。
现设计如下:
1.基类
package com.cdrs.expansion.cpse.orderimport; public class Import { public void Execute() { System.out.println("Import"); } }
2.YahooStore格式的订单
package com.cdrs.expansion.cpse.orderimport; public class YahooStore extends Import { public void Execute() { System.out.println("YahooStore"); } }
3.EBP类型的订单
package com.cdrs.expansion.cpse.orderimport; public class EBP extends Import{ public void Execute(){ System.out.println("EBP"); } }
订单导入时,先读取订单文件中的公司代码,而后根据公司代码来生成相应的类
public static void main(String[] args) { // TODO Auto-generated method stub try { //根据公司代码从数据库中找到类路径,再通过Class.forname来加载类名.class文件,从而实现动态加载类。这里以YahooStore为例,真实情况下需要用Package+ClassName的形式来表述,否则会提示类找不到 Import test=(Import)Class.forName("YahooStore").newInstance(); test.Execute(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
