Vote count:
0
I have this abstract class: FooAbstract
, and two classes extending it: FooSingleInstance
and FooMultiInstances
.
public abstract class FooAbstract{
private boolean single;
public FooAbstract(boolean single){
this.single = single;
}
public boolean isSingle(){
return single;
}
}
public class FooSingleInstance extends FooAbstract{
public FooSingleInstance(boolean single){
super(single);
}
private Bar bar;
public Bar getBar(){
return bar;
}
}
public class FooMultiInstances extends FooAbstract{
public FooMultiInstances(boolean single){
super(single);
}
private Map<String, Bar> barMap;
public Bar getBarFromKey(String key){
return barMap.get(key);
}
}
And I have a method doSomethingWithBar(FooAbstract foo)
:
public void doSomethingWithBar(FooAbstract foo){
if(foo.isSingle()){
Bar bar=((FooSingleInstance) foo).getBar();
//do something with bar
}else{
//some logic to get key
Bar bar=((FooMultiInstances) foo).getBarFromKey(key);
//do something with bar
}
}
The code kind of achieves what I was intended to achieve, but I don't feel it is adhering to coding principles. Is there a better way to achieve this?
asked 25 secs ago
Proper way to achieve inheritance
Aucun commentaire:
Enregistrer un commentaire