Factory method pattern

  • 18
  • Недоступна
1. Внимательно посмотри, какие классы у тебя есть. 2. В отдельных файлах в пакете common создай классы JpgReader, PngReader, BmpReader, которые реализуют интерфейс ImageReader. 3. В отдельном файле в основном пакете создай класс ImageReaderFactory с одним методом.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (290)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Serg
Уровень 33, Санкт-Петербург
18 сентября, 19:16
Сама задача очень простая, вообще ничего сложного. Но блин формулировка это нечто, запутался в каких пакетах какие файлы надо делать.
Максим Глотов
Уровень 35, Новосибирск
16 августа, 11:10
к текущему уровню уже не раз встречал задачи про паттерны - при этом я в упор не помню ни одной лекции, ни одного материала про паттерны. как и где они прошли мимо меня? было бы неплохо хотя бы в общих чертах объяснить - что есть паттерн и зачем он нужен. ну и к теме лекций текущего уровня задача вообще не относится. Кто задумал оборачивать в try-catch - это лишее. Не забываем про switch-case - его можно использовать вместо if-else. А поскольку в дефолтном блоке будет кидаться исключение - то и общий return делать не нужно, достаточно возвращать нужное значение в каждом блоке, и брэйки в таком случае будут лишними.
Килинар
Уровень 41, Москва
18 августа, 22:41
Что такое паттерн пока что не объяснялось (хотя на сайте есть статьи про это), но они сами уже встречались, в том числе фабричный и синглтон - в задачах того же капитана несколькими уровнями ранее. То ли в самом начале текущего курса, то ли в конце курса по синтаксису.
Sasha
Уровень 45, Kyiv
8 июля, 17:35
https://vertex-academy.com/tutorials/ru/pattern-factory-java/
Александр
Уровень 30, Рыбинск, Россия
31 июля, 14:22
Блин, почти готовое решение, только без проверки на NULL.
Максим Глотов
Уровень 35, Новосибирск
16 августа, 11:04
проверка именно на NULL и не нужна - любое неправильное значение будет NULL, об этом и написано в статье по ссылке.
Сергей
Уровень 28, Penza
30 сентября, 19:22
У меня без дополнительной проверки на null не пропустило.
Buble76
Уровень 26, Москва, Россия
3 июня, 13:53
Че - та совсем отупел - не понимаю что от меня хотят.
public static ImageReader getImageReader(ImageTypes imageTypes) {
        ImageReader type = null;
        switch (imageTypes) {
            case BMP -> type = new BmpReader();
        }


        return type;
    }
Валидатор выдает вот такую ошибку Ошибка в файле com/javarush/task/task16/task1631/ImageReaderFactory.java в строке : 13 Отсутствует объявление класса, интерфейса или enum-а 13 строка это - case BMP -> type = new BmpReader(); Хотя в ИДЕА все запускается ...
Данил Семёнов
Уровень 32, Санкт-Петербург
8 июля, 07:26
такая же проблема была, валидатор не принимает лямбда выражения.
Григорий
Уровень 22, Киев
9 июля, 13:03
проблема скорее всего в том что imageTypes может быть null, а в таком случае нельзя использовать оператор switch https://stackoverflow.com/questions/10332132/how-to-use-null-in-switch, просто надо заменить на if else if else
Сергей
Уровень 28, Penza
30 сентября, 19:25
Ставил проверку на null перед switch. В исключение не оборачивал. Все пропустило.
Алексей Сосько
Уровень 20
2 мая, 09:21
Есть ли варианты решить задачу с помощью switch?
Сергей Коваленко
Уровень 33, Краснодар, Россия
10 мая, 11:45
Да
selfer IllegalArgumentException в вашей программе
16 мая, 14:35
Да, switch/case помещаешь в try/catch, ловишь исключения, если что не так выбрасываешь новое исключение как в условии. Что бы все заработало в switch/case в дефолте тоже прописываешь выбрасывание исключения. Выглядит неоч, но работает.
Артем
Уровень 22, Киев
5 апреля, 15:52
Видимо, один я обернул switch в try-catch и ловил NPE, направляя его в IAE... Такой себе костылёк для валидатора.
Игорь
Уровень 19, Витебск, Беларусь
6 апреля, 12:52
Не один)) Я делал через if, и использовал equals при сравнении, из-за этого выкидало NPE и валидатор не пропускал. Пришлось оборачивать.
Сергей Коваленко
Уровень 33, Краснодар, Россия
10 мая, 11:47
Тоже обернул, но сам не допетрил, что нужно ловить NPE, а выкидывать IAE 👍
Flexo Bending Unit #3370318
11 июня, 09:04
не один
Viacheslav
Уровень 26, Киев, Украина
31 марта, 22:23
Беда.. :(
if (i.equals(ImageTypes.BMP))  (из-за этого не проходила)
поменял на
if (i == ImageTypes.BMP)
всё принялось. П.С. и эксепшн кидать не забывайте в конце.
Алексей
Уровень 35, Красноярск, Россия
1 апреля, 02:17
Для сравнения в Enum позволительно использовать и equals и ==. Но equals, в отличие от "==" может кинуть NPE, возможно поэтому валик не принимал. А может просто глюк Вали.
Mr Notorious
Уровень 20, Санкт-Петербург
29 марта, 22:10
Каким образом нужно понять что под "основным пакетом" подразумевается "task1631"? Спасибо за "понятное" условие.
Сергей
Уровень 28, Кандалакша, Россия
8 октября, 07:22
Вот из этой строки package com.javarush.task.task16.task1631;
Алексей
Уровень 19
23 марта, 12:54
Решил с первого раза учев все нюансы... Но валидатор не принимал до тех пор пока не сделал тоже самое через case switch...
VDT
Уровень 24, Екатеринбург, Россия
23 марта, 12:19
Через switch не примет, можете даже не пробовать. Ну или можете пробовать. Тоже самое через if принимает на ура.
Алексей
Уровень 35, Красноярск, Россия
1 апреля, 02:04
Примет. Просто проверяем на null.
selfer IllegalArgumentException в вашей программе
16 мая, 14:37
Можно и через свич, могу даже показать.