На этом уроке мы напишем метод, который сконвертирует строчку в объект BufferedReader. Таким образом мы сможем задачу по заполнению коллекции фруктов из строки делегировать уже созданному методу Read().
Теперь наш класс FruitReader стал чересчур универсальным, и это не очень хорошо. Мы его разделим на несколько составных частей, каждая часть будет отвечать за свой инструментарий.
Дата отправки отчёта:
27 ноября 2016 г.
Задание выполнено: за
1 час. 00 мин.
Чему научился:
Тому, что разбивать программу нужно не только по функциональности, но и по уровню абстракции, как в модели OSI.
Что было сложным:
А вот - файл корректно закрыть, даже когда возникает исключение. Интересно как new fr ведет себя в секции ресурсов try блока, но мне вполне достаточно данной реализации.
Комментарии:
Появилось некоторое несоответствие в моем классе GiftsReader. А именно: то что в него передается сумка - это вполне нарицательное имя. А то, что в нее добавляются фрукты - не совсем хорошо выглядит. Нужен бы класс СумкоСоздетельЗапихатель, в который можно положить некий абстрактный объект и уже от него создать фрукточитатель. Сумка, которая содержит фрукты или фрукты, которые можно положить в сумку... У деда мороза вроде только мешок и задачу о перекладывании из мешка в различные емкости решать не будем. :-) Но список возможных видов подарков и мешков мне пригодился бы. Чай то надо будет когда-нибудь готовить.
Научился: Узнал о классах ByteArrayInputStream, InputStreamReader. Трудности: Трудностей не возникло. Сначала подумал, что класс FruitReader неплохо было бы сделать абстрактным, но потом понял, что параметры у методов будут различаться, поэтому абстрактные методы сделать не получится.
Спасибо за урок.
Научился: Разделил класс не через наследование, а решил попробывать через композицию. Об этом много говорят в сети, что типа лучше делать через композицию. Ни разу не делал. Получилось