技术开发 频道

实战迷你版“一卡通”交易系统

  还有一个问题,一个交易的扣款模式是固定的,根据其交易编号而定,那我们怎么把交易编号与扣款策略对应起来呢?采用状态模式或责任链模式都可以,如果采用状态则认为交易编号就是一个交易对象的状态,对于一笔确定的交易(一个已经生成了的对象),它的状态不会发生从一个状态过渡到另一个状态的情况,也就是说它的状态只有一个,执行完毕后即结束,不存在多状态的问题;如果采用责任链模式,则可以以交易编码作为链中的判断依据,由每个执行节点进行判断,返回相应的扣款模式。但是在实际中,采用了关系型数据库存储扣款规则与交易编码的对应关系,为了简化该部分的讲义,我们在下面的设计中使用了条件判断语句来代替。

  还有,我们分析了这么多,这么复杂的扣款模块总要进行一个封装吧,你不能让上层的业务模块直接深入到我们模块的内部吧,于是门面模式又摆在了眼前。

  分析完毕,我们要先画出类图,挑柿子就选软的捏,那我们做设计也遵循一下这个原则,先选最简单的业务,然后画出类图,那我们先定义交易中使用到的两个类:IC卡类和交易类,如图35-1所示。

图35-1 IC卡类和交易类

  每个IC卡有三个属性,分别是IC卡号码、固定金额、自由金额,然后通过getter/setter方法来访问,如代码清单35-1所示。

  代码清单35-1 IC卡类

public class Card {
    
//IC卡号码
    
private String cardNo="";
    
//卡内的固定交易金额
    
private int steadyMoney =0;
    
//卡内自由交易金额
    
private int freeMoney =0;    
    
//getter/setter方法    
    
public String getCardNo() {
        return cardNo;
    }

    
public void setCardNo(String cardNo) {
        this.cardNo
= cardNo;
    }

    
public int getSteadyMoney() {
        return steadyMoney;
    }

    
public void setSteadyMoney(int steadyMoney) {
        this.steadyMoney
= steadyMoney;
    }

    
public int getFreeMoney() {
        return freeMoney;
    }

    
public void setFreeMoney(int freeMoney) {
        this.freeMoney
= freeMoney;
    }
}
0
相关文章