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

    技术2025-11-07  5

    在做订单系统时,无非要进行很多费用的计算,例如:运费、小计、税、折扣等

    经过分析后,设计了以下的类结构,效果还不错

    1.费用基类

    package com.cdrs.expansion.business.ordercalc; public class CollectTotals { public void collect(Orders order){ //费用计算的公用部分 } }

    2.Subtotal的计算

    package com.cdrs.expansion.business.ordercalc; public class Subtotal extends CollectTotals{ public void collect(Orders order){ //计算Subtotal的业务逻辑 } }

    3.Tax的计算

    package com.cdrs.expansion.business.ordercalc; public class Tax extends CollectTotals{ public void collect(Orders order){ //Tax的业务逻辑 } }

    4.Shipping fee的计算

    package com.cdrs.expansion.business.ordercalc; public class Shipping extends CollectTotals { public void collect(Orders order){ //运算的计算逻辑 } }

     

    在调用时要注意:为每个费用设置一个优先级,使其按顺序计算

    public static void main(String[] args) { // TODO Auto-generated method stub try { Orders order=new Orders(); //在进行运算时 1.要先从数据库中循环一下待计算项目,如运费、税等 2.对这些项目进行排序 3.进行循环 类似这样 PaymentList=payment.getPaymentList(); for(int i=0;i<paymentList.count;i++){ CollectTotals test = (CollectTotals)Class.forName(paymentList[i].itemcode).newInstance(); test.collect(order); } } 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)