Factory method pattern

  • 18
  • Недоступна
1. Внимательно посмотри, какие классы у тебя есть. 2. В отдельных файлах в пакете common создай классы JpgReader, PngReader, BmpReader, которые реализуют интерфейс ImageReader. 3. В отдельном файле в основном пакете создай класс ImageReaderFactory с одним методом.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (299)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Андрей Чуприна Эльф 80 лвл
5 декабря 2021, 10:21
Подскажите, пожалйста, зачем в "правильном решении" создается приватный конструктор?
public class ImageReaderFactory {
    private ImageReaderFactory() {
    }
Сергей Коваленко
Уровень 30, Краснодар
2 января, 11:47
видимо, как и в синглтоне, чтобы нельзя было создавать экземпляры этого класса. но его наличие или отсутствие не влияют на саму задачу.
Vlad Goncharov
Уровень 26, Дзержинск, Россия
28 ноября 2021, 09:22
тык ctrl+f -> "3. Компилятор требует вернуть результат (или требует молчать)" мгновенно решил освежив память старой информацией
БелК в труселях
Уровень 32, Покровск, Ukraine
21 ноября 2021, 21:01
Задача тяжелая. Выбрасывать исключение, а не ловить!
Sergey Kornilov
Уровень 36, Petropavlovsk, Казахстан
3 ноября 2021, 15:27
Всего эту задачу решили 24441 учеников.
Dmitrii
Уровень 23, Екатеринбург
3 ноября 2021, 10:28
Мой вариант принятый валидатором имеет такой код (внимание спйолер) ... ... в try (через switch) case ловил NPE, а выбрасывал новый IAE с нужным сообщением...
Радомир
Уровень 35, Волжск, Russian Federation
1 ноября 2021, 14:52
Не проходила валидация, пока явно не указал проверку на null Т.е. такой код не сработал:
if(ImageTypes содержит переданный параметр) {
..код...
} else {
выбрасываем исключение
}
А вот так прошло:
if(ImageTypes содержит переданный параметр) {
..код...
}
if (переданный параметр это null) {
выбрасываем исключение
}
В чём принципиальная разница?
Harsiyanin
Уровень 18, Назрань, Россия
17 декабря 2021, 12:38
Та же хня. Валидатор обломал по беспределу. Но я не пробовал отдельно указывать условие с нулём. Сейчас проверю.
Serg
Уровень 36, Санкт-Петербург
18 сентября 2021, 19:16
Сама задача очень простая, вообще ничего сложного. Но блин формулировка это нечто, запутался в каких пакетах какие файлы надо делать.
Максим Глотов
Уровень 35, Новосибирск
16 августа 2021, 11:10
к текущему уровню уже не раз встречал задачи про паттерны - при этом я в упор не помню ни одной лекции, ни одного материала про паттерны. как и где они прошли мимо меня? было бы неплохо хотя бы в общих чертах объяснить - что есть паттерн и зачем он нужен. ну и к теме лекций текущего уровня задача вообще не относится. Кто задумал оборачивать в try-catch - это лишее. Не забываем про switch-case - его можно использовать вместо if-else. А поскольку в дефолтном блоке будет кидаться исключение - то и общий return делать не нужно, достаточно возвращать нужное значение в каждом блоке, и брэйки в таком случае будут лишними.
Килинар
Уровень 41, Москва
18 августа 2021, 22:41
Что такое паттерн пока что не объяснялось (хотя на сайте есть статьи про это), но они сами уже встречались, в том числе фабричный и синглтон - в задачах того же капитана несколькими уровнями ранее. То ли в самом начале текущего курса, то ли в конце курса по синтаксису.
Sasha Java Developer в UKEESS
8 июля 2021, 17:35
https://vertex-academy.com/tutorials/ru/pattern-factory-java/
Александр
Уровень 33, Рыбинск, Россия
31 июля 2021, 14:22
Блин, почти готовое решение, только без проверки на NULL.
Максим Глотов
Уровень 35, Новосибирск
16 августа 2021, 11:04
проверка именно на NULL и не нужна - любое неправильное значение будет NULL, об этом и написано в статье по ссылке.
Сергей
Уровень 36, Penza
30 сентября 2021, 19:22
У меня без дополнительной проверки на null не пропустило.
Buble76
Уровень 33, Москва, Россия
3 июня 2021, 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 июля 2021, 07:26
такая же проблема была, валидатор не принимает лямбда выражения.
Григорий
Уровень 22, Киев
9 июля 2021, 13:03
проблема скорее всего в том что imageTypes может быть null, а в таком случае нельзя использовать оператор switch https://stackoverflow.com/questions/10332132/how-to-use-null-in-switch, просто надо заменить на if else if else
Сергей
Уровень 36, Penza
30 сентября 2021, 19:25
Ставил проверку на null перед switch. В исключение не оборачивал. Все пропустило.