Реклама

понедельник, 29 июня 2015 г.

Примеры паттернов проектирования в JDK. Часть 1

Часто на собеседованиях просят привести примеры реализации шаблонов (паттернов) проектирования из жизни. Например, среди стандартных классов Java Development Kit. Предлагаю цикл статей по исследованию данного вопроса. А начнем с Порождающих шаблонов.

Абстрактная фабрика (Abstract factory)
- предоставляет интерфейс для создания взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов.

    javax.xml.parsers.DocumentBuilderFactory#newInstance()
    javax.xml.transform.TransformerFactory#newInstance()
    javax.xml.xpath.XPathFactory#newInstance()

Строитель (Builder) - содержит порождающие методы, которые возвращают экземпляр этого же класса

    java.lang.StringBuilder#append() (несинхронизирован)
    java.lang.StringBuffer#append() (синхронизирован)
    java.nio.ByteBuffer#put() (а также CharBuffer, ShortBuffer, IntBuffer, LongBuffer, FloatBuffer и DoubleBuffer)
    javax.swing.GroupLayout.Group#addComponent()
    Все реализации java.lang.Appendable

Фабричный метод (Factory method) - содержит порождающие методы, которые возвращают реализацию абстрактного класса или интерфейса

    java.util.Calendar#getInstance()
    java.util.ResourceBundle#getBundle()
    java.text.NumberFormat#getInstance()
    java.nio.charset.Charset#forName()
    java.net.URLStreamHandlerFactory#createURLStreamHandler(String) (Возвращает один "синглтон" на протокол)

Прототип (Prototype) - содержит порождающие методы, которые возвращают отдельные экземпляры(копии) самого себя, включая значения полей

    java.lang.Object#clone() (при условии, что класс реализует интерфейс java.lang.Cloneable)

Синглтон (Singleton) - содержит порождающие методы, которые возвращают один и тот же экземпляр (обычно, самого себя) при каждом вызове

    java.lang.Runtime#getRuntime()
    java.awt.Desktop#getDesktop()

Вторая статья, рассматривающая структурные паттерны по этой ссылке.

Комментариев нет:

Отправить комментарий