gilbertzhyin 2012-03-30
对于那些可以被当做数值来使用的对象,我们称为VO(Value,Object)数值对象,数值对象的一个要求是一旦数值对象的实例变量值在构造函数中被指定,那么以后就再也不允许变化。
数值对象的一个隐含意思就是,所有的操作都必须返回一个对象,另一个隐含意思就是使用数值对象必须要实现equals函数
//Dollor实体类:
packagecom.hellokitty.pro;
publicclassDollor{
publicintammount;
//构造函数
publicDollor(intamount){
this.ammount=amount;
}
publicDollortimes(intmultiplier){
returnnewDollor(this.ammount*multiplier);
}
publicbooleanequals(Objectobject){
Dollordollor=(Dollor)object;
returnammount==dollor.ammount;
}
}
//测试类:
packagecom.hellokitty.tdd;
importorg.junit.Test;
importjunit.framework.Assert;
importcom.hellokitty.pro.Dollor;
publicclassTestDollor{
@Test
publicvoidtestMultiPlication()throwsException{
Dollorfive=newDollor(5);
Dollorsix=newDollor(6);
Dollorproduct=five.times(2);
Assert.assertEquals(10,product.ammount);
product=five.times(3);
Assert.assertEquals(15,product.ammount);
Assert.assertTrue(newDollor(5).equals(newDollor(5)));
}
}