【发布时间】:2010-07-30 13:05:55
【问题描述】:
我的一些课程应该被区别对待。哪种解决方案更好:
- 为我的类层次结构引入新接口,并使用 RTTI(运行时标识)检查类是否实现它
- 添加一个返回布尔值的方法,该值指示这个类是应该被正常对待还是应该被特殊对待
以下示例说明了上述情况:
1.
interface SpecialTreatment {}
class Base {}
class Special extends Base implements SpecialTreatment {}
class Normal extends Base {}
Base reference = new Special();
if(reference instanceof SpecialTreatment)
// do something special
else
// normal class
2.
interface Treatment {
boolean special();
}
class Base {}
class Special extends Base implements Treatment {
boolean special() { return true; }
}
class Normal extends Base implements Treatment {
boolean special() { return false; }
}
Treatment reference = new Special();
if(reference.special() == true)
// do something special
else
// normal class
【问题讨论】:
标签: design-patterns rtti