Для чего существуют AdsService.filterByVehicleTypeByPurpose(),
AdsService.filterByVehicleTypeByBody(),
AdsService.filterByVehicleTypeByFuel() с парными им
VehicleAd.getVehicleTypeByPurpose()
VehicleAd.getVehicleTypeByBody() VehicleAd.getVehicleTypeByFuel и
что ты будешь делать если появятся фары, багажники, бамперы и проч.
критерии и надо построить фильтрацию по ним. Зачем и почему в AdsService повторяется один и тот же код вида:
for (VehicleAd ad : adList) {
if (ad.getVehicleTypeByPurpose().equals(vehicleType)) {
Я не знаю какой там уровень, изучен ли полиморфизм, а вдруг за этим последует пример "это было как делать не надо", "вместо этого делайте вот так"?
но вот это
private VehicleTypeByPurpose vehicleTypeByPurpose;
private VehicleTypeByBody vehicleTypeByBody;
private VehicleTypeByFuel vehicleTypeByFuel;
с методами
VehicleAd.getVehicleTypeByBody()
Это именно то, как в ООП делать не надо.