Часто на собеседованиях просят привести примеры реализации шаблонов (паттернов) проектирования из жизни. Например, среди стандартных классов 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()
Вторая статья, рассматривающая структурные паттерны по этой ссылке.
Абстрактная фабрика (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()
Вторая статья, рассматривающая структурные паттерны по этой ссылке.
Комментариев нет:
Отправить комментарий