重构第十章
13.Encapsulate Downcast(封装[向下转型]动作)
某个函数返回的对象,需要有函数调用者执行[向下转型]动作,将向下转型动作移到函数中。
Example:
Object lastReading() {
return readings.lastElement();
}
Reading lastReading = thiSite.lastReading();
End:
Reading lastReading() {
return (Reading)readings.lastElement();
}
Reading lastReading = theSite.lastReading();
Conclusion:
你的某个函数返回一个值,并且你知道[你所返回的对象]其型别比函数签名式所昭示的更特化,这种情况下,你不应该要求用户承担向下转型的责任,应该尽量为他们提供准确的型别。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!