簡體   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