除了使用get()和set()函数,程序员还经常需要使用has()和clear()函数。例如,假设你有一车辆,为了获得一个对象目标,你可以生成这样的函数:
- GetDestination()
- SetDestination( NewDestination)
然而,如果这一车辆不作为一个对象目标,你可以增加如下的函数:
- HasDestination()
- ClearDestination() (optional)
生成以上代码可能会碰到一些麻烦。Has()和clear()函数增加了编程的复杂性,因为为了编写它们,你必须增加额外的逻辑分析。
利用验证类来简化程序
你可以使用一个验证类来处理以上的问题,这样将会给你在编程过程带来便利。
使用验证类实质上是在代码执行过程中分解使用get()/, set()/, has()/, 和clear()函数。在内部,验证类使用了一个执行器,这一执行器能够调用get()/,
set()/, has()/, 和clear()函数。
在缺省情况下,你可以使用这两个执行器:
- ValidatorUseInvalidValue< Type, invalidValue>, 在内部调用一个非法值。
- ValidatorWithBoolean< Type>, 在内部调用一个布尔量值。
这两个执行器的用法很简单,从验证类的代码你可以看得出来。你也可以直接添加自己的验证类执行器而使用它。
验证类
既然具有多种验证类,你可以使用最合适你的程序的类,这些验证类为:
- Validator< Type, Implementer>: 针对提供的类型,这一个类包括get(), set(), 和has()
函数,没有clear() 函数。
- ValidatorWithClear< Type, Implementer>: 针对这一类型,这一个类包括get(), set(), has(),
和clear()函数。
- ValidatorWithInvalidValue< Type, invalidValue>: 针对这一类型,这一个类包括get(),
set(), 和has()函数。你可以赋给一个在内部上非法的值。
- ValidatorWithInvalidValueAndClear< Type, invalidValue>: 和前一个类相似,但它包括了clear()
函数。
验证类的使用
你可以看到,使用验证类很直接又方便,同时也提供你所需要的各种简便的转换,如下所示:
// equivalent to
// int nDestinationId = my_car.DestinationId().get();
int nDestinationId = my_car.DestinationId();
// equivalent to
// my_car.DestinationId().set( 3);
my_car.DestinationId() = 3;