空对象——对Null的代替

出差!出差!出差!没完没了的出差!害得我blog也不能常常更新了,看样子我是要考虑换个工作了。

不过出差也不是一无是处的,在出差的这段时间里终于抽空把Martin的重构看完了。对于其中空对象的用法,倒是令本人感触颇深,故一回上海就立刻记录在此。

空对象,顾名思义就是什么也没有的对象。先看一段代码就明白了。

if(systemdata == Null)

 thetime = systemdata.gettime();

else

thetime = " 00:00:00";

这段代码即是简单的取时间,其中有对于系统时期对象systemdata的是否为空的判断。如果使用空对象,就不用那样判断了。具体作法是,派生systemdata一个空对象,取名最好是nullsystemdata之类一目了然的。然后在该类中重写可能使用得到的函数,比如代码中的gettime,其中的行为就是碰到Null时的行为。即:

string nullsystemdata::gettime(void){

    return "00:00:00";

}

而客户端代码就变成了:

thetime = systemdata.gettime();

看,多么简单!

 

这只是空对象的简单用法,使用空对象产生的更有趣的诸多特性,比如让空对象产生空对象;用空对象代替空指针来检测指针错误等等。由于时间不多,只能讲到这里了,哎。。。我又要去干活了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值