lundi 6 avril 2015

Proper way to achieve inheritance


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