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

  • Все подклассы java.io.InputStream , OutputStream , Reader и Writer имеют конструктор, принимающий объекты этих же классов.

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

  • Фабричный метод

  • Абстрактная фабрика

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


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

    Паттерны проектирования в I/O

    Декоратор


    Декоратор — это структурный паттерн, который позволяет добавлять объектам новые поведения на лету, помещая их в объекты-обёртки.

    Декоратор позволяет оборачивать объекты бесчисленное количество раз благодаря тому, что и обёртки, и реальные оборачиваемые объекты имеют общий интерфейс. Подробней о Декораторе 

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

    • Все подклассы java.io.InputStreamOutputStreamReader и Writer имеют конструктор, принимающий объекты этих же классов.

    • java.util.Collections, методы checkedXXX(), synchronizedXXX() и unmodifiableXXX().

    • javax.servlet.http.HttpServletRequestWrapper и HttpServletResponseWrapper

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

    Адаптер


    Адаптер — это структурный паттерн, который позволяет подружить несовместимые объекты.


    Адаптер выступает прослойкой между двумя объектами, превращая вызовы одного в вызовы понятные другому.

    Подробнее: https://refactoring.guru/ru/design-patterns/adapter

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

    • java.util.Arrays#asList()

    • java.util.Collections#list()

    • java.util.Collections#enumeration()

    • java.io.InputStreamReader(InputStream) (возвращаетобъектReader)

    • java.io.OutputStreamWriter(OutputStream) (возвращаетобъектWriter)

    • javax.xml.bind.annotation.adapters.XmlAdapter#marshal()и #unmarshal()

    Признаки применения паттерна: Адаптер получает конвертируемый объект в конструкторе или через параметры своих методов. Методы Адаптера обычно совместимы с интерфейсом одного объекта. Они делегируют вызовы вложенному объекту, превратив перед этим параметры вызова в формат, поддерживаемый вложенным объектом.

    Фабричный метод


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

    Фабричный метод задаёт метод, который следует использовать вместо вызова оператора new для создания объектов-продуктов. Подклассы могут переопределить этот метод, чтобы изменять тип создаваемых продуктов. Подробней о Фабричном методе 

    Паттерн широко используется в стандартных библиотеках Java:

    • java.util.Calendar#getInstance()

    • java.util.ResourceBundle#getBundle()

    • java.text.NumberFormat#getInstance()

    • java.nio.charset.Charset#forName()

    • java.net.URLStreamHandlerFactory#createURLStreamHandler(String) (Возвращает разные объекты-одиночки, в зависимости от протокола)

    • java.util.EnumSet#of()

    • javax.xml.bind.JAXBContext#createMarshaller() и другие похожие методы.

    Признаки применения паттерна: Фабричный метод можно определить по создающим методам, которые возвращают объекты продуктов через абстрактные типы или интерфейсы. Это позволяет переопределять типы создаваемых продуктов в подклассах.

    Абстрактная фабрика


    Абстрактная фабрика — это порождающий паттерн проектирования, который решает проблему создания целых семейств связанных продуктов, без указания конкретных классов продуктов.

    Абстрактная фабрика задаёт интерфейс создания всех доступных типов продуктов, а каждая конкретная реализация фабрики порождает продукты одной из вариаций. Клиентский код вызывает методы фабрики для получения продуктов, вместо самостоятельного создания с помощью оператора new. При этом фабрика сама следит за тем, чтобы создать продукт нужной вариации. Подробней об Абстрактной фабрике 

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

    • javax.xml.parsers.DocumentBuilderFactory#newInstance()

    • javax.xml.transform.TransformerFactory#newInstance()

    • javax.xml.xpath.XPathFactory#newInstance()

    • ? io/nio

    Признаки применения паттерна: Паттерн можно определить по методам, возвращающим фабрику, которая, в свою очередь, используется для создания конкретных продуктов, возвращая их через абстрактные типы или интерфейсы.
    1   2   3   4   5   6   7   8   9   ...   39


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