If else or Switch case to Polymorphism
If you try to express your logic in if-else way like this,
private static String getSoundIfElseWay(String animal) {
if (animal.equalsIgnoreCase("Dog"))
return "Bark";
else if (animal.equalsIgnoreCase("Cat"))
return "Mew";
else if (animal.equalsIgnoreCase("Lion"))
return "Roar";
return "";
}
then polymorphic way would be,
private static String getSoundPolymorphicWay(Animal animal){
return animal.say();
}
public abstract class Animal {
public abstract String say();
}
public class Dog extends Animal{
@Override
public String say() {
return "Bark";
}
}
public class Cat extends Animal {
@Override
public String say() {
return "Mew";
}
}
public class Lion extends Animal {
@Override
public String say() {
return "Roar";
}
}
Look at the change in behavior based on the condition. If you could come up with a object than could take this behavior, push that to the corresponding object.
Same rule applies to switch-case also.