这是我的问题的一个抽象示例:我有一个Car
具有类型 ( ) 的通用类 ( brand
)。所有的对象都应该只因品牌而异,并根据这个品牌进行不同的处理。
此类的所有对象都收集在一个服务类的列表中。该服务应该对整个列表执行一个例程,这几乎是相同的。两者之间只有一个函数调用应该不同。
基于这种类型,我想调用不同的方法:目前我为枚举类型断言 equals 并根据结果调用不同的方法。但这有点难看,我想知道是否有更好的解决方案?
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();
}
}
}
}