Here is an abstract example of my problem: I have a general class (Car) which has a type (brand). All objects should only differ by brand, and based on this brand should be handled differently.
All objects of this class are collected in a List of a Service class. The service should perform a routine on the whole list, which is mostly the same. Just one function call in between should differ.
Based on this type I want to call different methods: At the moment I’m asserting equals for the enum type and call different methods based on the outcome. But this is kind of ugly and I wonder if there are better solutions on this?
class Car {
public enum Brand {
BMW, AUDI;
}
private Brand brand;
specificMeth1();
specificMeth2();
}
class Service {
List<Car> bmw;
List<Car> Audi;
processCar() {
processList(bmw);
processList(audi);
}
processList(List<Car> list) {
for (Car car : list) {
if (car.getBrand.equals(Brand.BMW)) {
specificMeth1();
} else {
specificMeth2();
}
}
}
}
You should put the method in the enum: