Я работаю над поисковым / организационным алгоритмом.Я использую несколько enum
для определения каждой части данных, которые я хотел бы организовать.Например:
enum CarType implements SearchFactor {
CAR, SUV, TRUCK, SEMI, LIMO;
@Override public SearchFactor getSearchFactor() { return this; }
}
и
enum PaintColor implements SearchFactor {
BLACK, WHITE, BLUE, GRAY, RED;
@Override public SearchFactor getSearchFactor() { return this; }
}
, где SearchFactor
:
interface SearchFactor { }
, а примерный класс данных будет:
class Vehicle {
CarType type = CarType.CAR;
PaintColor color = PaintColor.BLACK;
}
Теперь для организационной части я просто создаю массив включенных SearchFactor
и добавляю перечисление того, что SearchFactor
я бы хотел, чтобы алгоритм следовал.Это делается путем постепенного обхода массива Vehicle
с и сравнения Vehicle
s type
и color
с массивом включенных SearchFactor
с.Например:
Vehicle[] getVehicleFromSearchFactor(SearchFactor[] factors) {
ArrayList<Vehicle> factoredVehicles = new ArrayList<Vehicle>();
for (Vehicle v : getListOfVehicles()) {
for (SearchFactor f : factors) {
if (v.type == f || v.color == f) {
factoredVehicles.add(v);
break;
}
}
}
return factoredVehicles;
}
Это хорошая практика?Это слишком абстрактно?