Главная страница
Навигация по странице:

  • Признаки применения паттерна

  • Паттерн Декоратор

  • Ответы на вопросы по ревью 4. Java io. Ключевым понятием здесь является понятие потока


    Скачать 1.93 Mb.
    НазваниеJava io. Ключевым понятием здесь является понятие потока
    Дата03.07.2022
    Размер1.93 Mb.
    Формат файлаdoc
    Имя файлаОтветы на вопросы по ревью 4.doc
    ТипДокументы
    #623608
    страница4 из 39
    1   2   3   4   5   6   7   8   9   ...   39

    Шаблонный метод


    Шаблонный метод — это поведенческий паттерн, задающий скелет алгоритма в суперклассе и заставляющий подклассы реализовать конкретные шаги этого алгоритма. Подробней о Шаблонном методе 

    Примеры Шаблонных методов в стандартных библиотеках Java:

    • Все не-абстрактные методы классов java.io.InputStream, java.io.OutputStream, java.io.Reader и java.io.Writer.

    • Все не-абстрактные методы классов java.util.AbstractList, java.util.AbstractSet и java.util.AbstractMap.

    • javax.servlet.http.HttpServlet, все методы doXXX() по умолчанию возвращают HTTP-код 405 «Method Not Allowed». Однако вы можете переопределить их при желании.

    Признаки применения паттерна: Класс заставляет своих потомков реализовать методы-шаги, но самостоятельно реализует структуру алгоритма.

    Трудно переоценить значимость пакета java.io: он поддерживает систему ввода-вывода в Java. В качестве источника ввода или места вывода могут выступать файл, сетевое соединение, консоль. Все устройства описываются единой абстракцией – потоком (stream).

    В пакете java.io множество классов и интерфейсов, предназначенных для работы с байтовыми и символьными потоками, сериализацией объектов. Их разнообразие по началу может смущать, а последовательность использования не выглядит очевидной. Помочь с осмыслением может Декоратор.

    Паттерн Декоратор 


    динамически наделяет объект новыми возможностями и является гибкой альтернативой субклассированию в области расширения функциональности.

    Декоратор

    • реализует тот же интерфейс или абстрактный класс, что и декорируемый компонент

    • содержит компонент (ссылка на компонент хранится в переменной экземпляра)

    • может расширить состояние компонента или добавить новые методы


    На схеме InputStream – абстрактный компонент. Конкретные компоненты: FileInputStream, StringBufferInputSteam, ByteArrayInputStream, ObjectInputStream и др.

    Абстрактный декоратор – FilterInputStream, его потомки – конкретные декораторы:

    • BufferedInputStream — буферизует ввод для повышения производительности и дополняет интерфейс новым методом readLine() для построчного чтения символьных данных.

    • LineNumberInputStream — добавляет возможность подсчета строк в процессе чтения данных.

    Patterns used in java.io package.


    Ответ на стековерфлоу


    первая часть статьи как раз расшифровывает этот ответ со стековерфлоу

    https://stackoverflow.com/a/37607765

    Decorator_pattern.
    Examples:
    The abstract class java.io.FilterInputStream and its concrete subclasses : BufferedInputStream, CheckedInputStream etc

    Abstract_factory_pattern and Factory_method_pattern patterns:
    Examples:
    The abstract class InputStream and its concrete sub classes: ByteArrayInputStream, FileInputStream, FilterInputStream etc.

    InputStream input = new FileInputStream("some_file.txt");

    Below classes enable unification of input from a byte-array, a file, a network connection, a persistent storage, a pipe, a string, etc:

    • class java.io.InputStream

      • class java.io.ByteArrayInputStream

      • class java.io.FileInputStream

      • class java.io.FilterInputStream

      • class java.io.ObjectInputStream

      • class java.io.PipedInputStream

      • class java.io.SequenceInputStream

      • class java.io.StringBufferInputStream

    Adapter_pattern:
    Examples:
    java.io.InputStreamReader translates a byte stream into a character stream, and a java.io.OutputStreamWriter translates a character stream into a byte stream.You can find some more details in this article

    Template_method_pattern
     (source: journaldev article)All non-abstract methods of java.io.InputStream, java.io.OutputStream, java.io.Reader and java.io.Writer.

    +250

    You can find an overview of a lot of design patterns in Wikipedia. It also mentions which patterns are mentioned by GoF. I'll sum them up here and try to assign as many pattern implementations as possible, found in both the Java SE and Java EE APIs.


    1   2   3   4   5   6   7   8   9   ...   39


    написать администратору сайта