これが私の問題の抽象的な例です。Car
タイプ ( ) を持つ一般的なクラス ( ) がありbrand
ます。すべてのオブジェクトはブランドによってのみ異なり、このブランドに基づいて異なる方法で処理する必要があります。
このクラスのすべてのオブジェクトは、サービス クラスのリストに収集されます。サービスは、リスト全体に対してルーチンを実行する必要がありますが、これはほとんど同じです。間にある 1 つの関数呼び出しだけが異なる必要があります。
この型に基づいて、さまざまなメソッドを呼び出したいと考えています。現時点では、enum 型に対して 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();
}
}
}
}