繁体   English   中英

使用镜像类层次结构转换对象的设计

[英]Design for converting objects with mirroring class hierarchy

我有一个低级 (即不能依赖于高级模块)MySQL DAO包,该包返回多态对象

abstract class MySQLAnimal {
    int a;
}

class MySQLCat extends MySQLAnimal {
    int b;
}

Collection<MySQLAnimal> retrieveAllMySQLAnimals(...) {...}

然后,我有一个使用此程序包的使用者,该程序包提供了抽象(即与如何检索它们无关),并包含具有镜像类层次结构的类:

abstract class Animal {
    int a;
}

class Cat extends Animal {
    int b;
}

Collection<Animal> retrieveAllAnimals(...) {...}

我正在尝试在此使用者包中编写一个适配器,该适配器需要使用MySQL DAO检索MySQLCat对象,并以抽象类的形式返回它(即,实现retrieveAllAnimals(...)方法)。 什么是最干净的方法(阅读:无需调用instanceof )?

ClassClass有一个HashMap 当一个对象进入时,从它自己的类中在HashMap中查找它,然后实例化新类的对象,并使用反射来复制相同名称的所有成员变量。

将来支持新类所需的唯一更改是添加新映射,这些映射可以存储在配置文件中。

mapping.put(MySQLCat.class, Cat.class);

Class<? extends Animal> targetClass = mapping.get(objectToMap.getClass());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM