【发布时间】:2018-12-17 05:39:03
【问题描述】:
以下情况的推荐设计方法/替代方案是什么:
BaseCalculator:
BaseType prepareData()
useData(BaseType)
派生计算器使用派生类型覆盖基本功能 -
DerivedCalculator1:
BaseType prepareData(){ return DerivedType1}
useData(BaseType t1){ DerivedType1 t=(DerivedType1)t1 //typecast down and proceed....}
DerivedCalculator2
BaseType prepareData(){ return DerivedType2}
useData(BaseType t1){ DerivedType2 t=(DerivedType2)t1 //typecast down and proceed....}
是否有一种设计方法可以避免派生类进行类型转换 - 因为它总是为运行时的事故打开大门?
【问题讨论】:
-
您可以使用泛型:
class BaseCalculator<T extends BaseType> { T prepareData(); void useData(T t)等
标签: java design-patterns polymorphism clean-architecture