龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

学习.NET架构设计系列:OO设计初次见面(5)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
这个结构看上去和刚才那个似乎没有什么不同,其实差别是很大的。上面的那个Deposit只是缴费记录,这里的Entry是账目,包括缴费、扣费、滞纳金……所有

这个结构看上去和刚才那个似乎没有什么不同,其实差别是很大的。上面的那个Deposit只是缴费记录,这里的Entry是账目,包括缴费、扣费、滞纳金……所有的费用。销账扣费的过程不应该记录在账单中,而是应该以账目的形式记录下来。Account的代码片段如下:

 

public class Account
{
    
public Bill[] GetBills()
    {
        
//按时间顺序返回所有的账单
    }
    
    
public Bill GetBill(DateTime month)
    {
        
//按照月份返回某个账单
    }
    
    
public Entry[] GetEntrees()
    {
        
//按时间顺序返回所有账目
    }
    
    
public void Pay(float money)
    {
        
//缴费
        
//先添加一个账目,然后冲销欠费的账单
    }
    
    
public Bill GenerateBill(DateTime month)
    {
        
//出账
        
//先添加一个账单,然后用余额冲销这个账单
    }
    
    
public float GetBalance()
    {
        
//返回账户的结余
        
//每一条账目的金额总和,就是账户的结余
    }
    
    
public float GetDebt()
    {
        
//返回账户的欠费
        
//每一个账单的欠费金额综合,就是账户的欠费
    }
}

Entry有很多种类型(存入、支取、滞纳金、赠送费),可以考虑可以为每一种类型创建一个子类,就像这样:

搞成父子关系看起来很复杂、麻烦,并且目前也看不出将这些类型作为Entry的子类有哪些好处。所以我们决定不这样做,只是简单的把这几种类型作为Entry的一个属性。Entry的代码片段如下:
 

public class Entry
{
    
public DateTime GetTime()
    {
        
//返回账目发生的时间
    }
    
    
public float GetValue()
    {
        
//返回账目的金额
    }
    
    
public EntryType GetType()
    {
        
//返回账目的类型(存入、扣除、赠送、滞纳金)
    }
    
    
public string GetLocation()
    {
        
//返回账目发生的营业厅
    }
    
    
public Bill GetBill()
    {
        
//如果这是一次扣除,这里要返回相关的账单
    }
}

Entry是一个枚举类型,代码如下:
 

public enum EntryType
{
    Deposit 
= 1,
    Withdrawal 
= 2,
    Penalty 
= 3,
    Present 
= 4
}

下面的界面显示的就是刚才那个账户的账目。要显示这个界面只需要调用Account的GetEntrees方法,得到所有的账目,然后按时间顺序显示出来。这个界面上的消费情况就明确多了,用户很容易弄明白某个缴费是在哪几个月份被消费掉的。

并且,发票上的那几个一直搞不明白的数值也有了答案。比如2005年6月份的发票,我们先看看2005年6月份销账的所有账目(第六行、第八行),这两次一共扣除73.66元,这个金额就是本次消费;两次扣除之间存入200元,这个就是本次实缴;第五行的结余是17.66元,这就是上次结余;第八行上的结余是144元,这个就是本次结余。

用户检查了这个设计,觉得这样的费用显示明确多了。尽管一些措辞不符合习惯的业务词汇,但是他们的概念都是符合的。并且上次还有一个需求没有说:有时候需要把多个月份的发票合在一起打印。按照这样的账目表达方式,合并的发票数值也比较容易搞清楚了。明确了这样的对象关系,实现这个需求其实很容易。


精彩图集

赞助商链接