Factory method pattern

  • 18
  • Недоступна
1. Внимательно посмотри, какие классы у тебя есть. 2. В отдельных файлах в пакете common создай классы JpgReader, PngReader, BmpReader, которые реализуют интерфейс ImageReader. 3. В отдельном файле в основном пакете создай класс ImageReaderFactory с одним методом. 3.1. Подумай, как он должен называт
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (279)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
a_victorchik 16 уровень, Минск
вчера, 23:27
Это было великолепно! return type.getDeclaringClass().cast(null);
gunsroses 17 уровень
20 января, 05:44
public static ImageReader getImageReader(ImageTypes type) {} откуда ImageReader ?
🦔 Виктор админ Java Android канала в telegram @LetsCodeItExpert
16 января, 17:02
Интересная задача, я не удержался и таки решил со свитчем, поехали: 1. Создаём все необходимые классы в отдельных файлах, имплементим им интерфейс, согласно ТЗ. 2. Создаём публичный, статический метод, который принимает один параметр класса с типами изображений и возвращает объект типа ридер изображения. 3. Внутри метода сначала проверяем, если переданное аргументом изображение равняется null, то тут же бросаем новое исключение нелегального аргумента. 4. Дальше конструкция с переключателем, который прогоняет все совпадения типов изображений:
переключатель (переданноеИзображение) {
  совпадение BMP:
    вернуть новый BmpРидер();
// прогоняем таким образом все форматы изображений и возвращаем соответствующий ридер.
5. Проверить null и бросить исключение в дефолте переключателя не получится, потому что: 6. Всё получится! -- tlgrm: @LetsCodeIt | @SefoNotasi
Gadzhalik 17 уровень, Санкт-Петербург
20 января, 08:01
Спасибо за подсказку по пункту 5
jimaltair 20 уровень, Калининград
9 января, 11:25
Задача классная, позволяет изучить новый паттерн проектирования, но валидатор долбанутый. Чтобы долго не мучаться - решайте сразу через if...else, не используйте switch...case
Иван Сергеевич 20 уровень, Киров
27 декабря 2020, 07:40
Решил задачу через свитч, но так как свитч может выбросить исключение типа NullPointedException, пришлось делать костыль: ловить NullPointedException и выбрасывать уже требуемое исключение. А так задача должна решаться через if/else.
Дмитрий 17 уровень, Новосибирск
23 декабря 2020, 06:10
Поставил задаче 1, поставил бы ноль. Через Idea все сделал. Осталось сюда переписать код и выполнить задачу. Но я не смог этого сделать, при создании класса ImageReaderFactory, у меня возникала ошибка укажите импорт, я не разу в жизни с этим не сталкивался, нажал на решение задачи. Оказалось нужно указать. import com.javarush.task.task16.task1631.common.*;
Алексей 22 уровень, Зима
16 декабря 2020, 01:52
Практически все комментарии мне не помогли побороть последний пункт. А вся проблема была в том, что я условие обернул в:
try {...}
  catch (IllegalArgumentException e) {
    throw new IllegalArgumentException("Неизвестный тип картинки");
Оказалось, что валидатор хочет видеть throw new IllegalArgumentException("Неизвестный тип картинки"); после else
Майя 18 уровень, Харьков
3 декабря 2020, 11:48
А кто объяснит, зачем в классе ImageReaderFactory мы делаем конструктор ПРИВАТНЫМ? private ImageReaderFactory() {}
Shepgrade 23 уровень
3 декабря 2020, 20:04
Чтобы никто случайно не создал объект этого класса, т.к. класс нужен нам только для вызова его статического метода. В данной задаче можно и не создавать, но правильнее такие вещи предусматривать
Олег Д 20 уровень, Москва
11 декабря 2020, 15:53
ИМХО Это не имеет смысла, Внутри класса нет переменных и/или нестатических методов. Создание объекта этого класса ничего не даст. С точки зрения уязвимости приватный конструктор тоже ничего не даст без синглтона / запрета ссылки создавать / публичности + нестатичности класса
CoolZYzop 19 уровень, Кемерово
2 декабря 2020, 02:44
Выбесила эта задача. При неправильной обработке null валидатор говорит, что не выполнены 4 последних пункта и еще надо проверить вывод ридера для BMP. Совершенно сбивает с толку. Затупил на том, что надо вернуть объект или кинуть исключение. Никак не мог сообразить как вставить исключение в return. Очень много времени потратил. Валидатор и комментарии уводили вобще не в ту сторону. if (boolean1) return object1; if (boolean2) return exception; // вот в этом месте я не догонял как сделать здесь надо делать так Object var; if (boolean1) var = object1; if (boolean2) exception; return var; хотя судя по тому, что здесь это не обсуждалось, я один такой дебил. Ну или если не понадобится не страшно, тут итак полно бесполезных каментов.
Алексей 18 уровень, Санкт-Петербург
30 ноября 2020, 16:29
там в 7 пункте требований опечатка 7. Метод getImageReader должен кидать исключение IllegalArgumentException, если передан null.