TypeEnum
MATERIAL,
OPERATION,
SIGNATURE;
class AbstractModule
TypeEnum typeEnum
String name
String color
class MaterialModule extends AbstractModule
some properties unique to this module
class OperationModule extends AbstractModule
some properties unique to this module
class SignatureModule extends AbstractModule
someProperties unique to this module
在某些时候,很多xxxModule被制作并存储在AbstractModule列表中。然后稍后迭代所有列表,并使用一个切换用例将抽象模块投射回其子类并进行处理
switch (module.getTypeEnum) {
case MATERIAL:
MaterialModule materialModule = (MaterialModule) module;
//do stuff with materialModule unique property
break;
case OPERATION:
OperationModule operationModule = (OperationModule) module;
//do stuff with operationModule unique property
break;
case SIGNATURE:
SignatureModule signatureModule = (SignatureModule) module;
//do stuff with signature module unique property
break;
每个“使用模块唯一属性执行操作”应该在每个子类的方法中
这样,您可以只调用module.doModuleStuff()而不进行切换,这是不行的,因为我仍然需要为此将其强制转换回其子类。
问题是,如果将此代码放在每个子类中,当我的列表包含AbstractModules时如何调用正确的方法?我的意思是没有这个typeEnum和switch的情况。
繁星淼淼
相关分类