利用类名创建对象来简化程序结构

    技术2025-11-08  3

    需求:

    目前有一个订单系统,需要接收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(); } }

    最新回复(0)