ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
999515 Топик полностью
RxTx (27.04.2020 19:27, просмотров: 518) ответил Argon на А кто сказал, что расширяться добавлением методов? В том-то и дело, что всего лишь добавлением значений в enum и соответствующих классов-потомков для классов вида TrackType. А все методы бы оставались неизменными.
Для чего существуют 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()


Это именно то, как в ООП делать не надо.