1. Введение
Коллекции Java — это тема, которую часто поднимают на технических собеседованиях с разработчиками Java. В этой статье рассматриваются некоторые важные вопросы, которые задают чаще всего, и на них может быть сложно ответить правильно.
Коллекции Java — это тема, которую часто поднимают на технических собеседованиях с разработчиками Java. В этой статье рассматриваются некоторые важные вопросы, которые задают чаще всего, и на них может быть сложно ответить правильно.
В этой статье мы обсудим шаблон проектирования «Абстрактная фабрика».
В книге « Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения » говорится, что абстрактная фабрика «предоставляет интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов». Другими словами, эта модель позволяет нам создавать объекты, которые следуют общему шаблону.
Примером шаблона проектирования Abstract Factory в JDK является newInstance()
класса javax.xml.parsers.DocumentBuilderFactory
.
В этом кратком руководстве мы рассмотрим шаблон адаптера и его реализацию в Java.
Шаблон адаптера действует как соединитель между двумя несовместимыми интерфейсами, которые в противном случае не могут быть соединены напрямую. Адаптер оборачивает существующий класс новым интерфейсом, чтобы он стал совместимым с интерфейсом клиента.
Основным мотивом использования этого шаблона является преобразование существующего интерфейса в другой интерфейс, ожидаемый клиентом. Обычно это реализуется после разработки приложения.
В этом руководстве мы будем использовать библиотеку FreeBuilder для создания классов построителей на Java.
Builder — один из наиболее широко используемых шаблонов проектирования создания в объектно-ориентированных языках. Он абстрагирует создание сложного объекта предметной области и предоставляет гибкий API для создания экземпляра. Таким образом, это помогает поддерживать краткий уровень предметной области.
Несмотря на свою полезность, конструктор, как правило, сложен в реализации, особенно на Java. Даже для более простых объектов-значений требуется много шаблонного кода.
В этом кратком руководстве мы познакомим вас с составным шаблоном проектирования в Java.
Мы собираемся описать структуру и цель ее использования.
Комбинированный шаблон предназначен для того, чтобы можно было одинаково обрабатывать отдельные объекты и композиции объектов или «композиты».
Начиная с Java 8, мы можем определять функции с одним и двумя параметрами в Java, что позволяет нам внедрять их поведение в другие функции, передавая их в качестве параметров. Но для функций с большим количеством параметров мы полагаемся на внешние библиотеки, такие как Vavr .
Другой вариант — использовать каррирование . Комбинируя каррирование и функциональные интерфейсы , мы можем даже определить легко читаемые компоновщики, которые заставят пользователя вводить все входные данные.
В этом уроке мы дадим определение каррингу и представим его использование .
Шаблон декоратора можно использовать для придания объекту дополнительных обязанностей статически или динамически. Декоратор предоставляет расширенный интерфейс для исходного объекта.
При реализации этого паттерна мы предпочитаем композицию наследованию, чтобы можно было снова и снова сокращать накладные расходы на создание подклассов для каждого декоративного элемента. Рекурсия, связанная с этим дизайном, может использоваться для украшения нашего объекта столько раз, сколько нам нужно.
Предположим, у нас есть объект «Рождественская елка», и мы хотим его украсить. Украшение не меняет самого объекта; просто в дополнение к елке мы добавляем некоторые элементы декора, такие как гирлянда, мишура, верхушка для елки, пузырьковые огни и т. д .:
Паттерн Proxy позволяет нам создать посредника, который действует как интерфейс к другому ресурсу , а также скрывает базовую сложность компонента.
Рассмотрим тяжелый объект Java (например, соединение JDBC или SessionFactory
), который требует некоторой начальной настройки.
Мы хотим, чтобы такие объекты инициализировались только по запросу, и как только они будут инициализированы, мы хотели бы повторно использовать их для всех вызовов:
В этой быстрой статье мы обсудим два самых популярных способа реализации синглтонов в простой Java.
Самый популярный подход — реализовать Singleton, создав обычный класс и убедившись, что он имеет:
В этом уроке мы поговорим о шаблоне проектирования блокировки с двойной проверкой. Этот шаблон уменьшает количество захватов блокировки, просто предварительно проверяя условие блокировки. В результате этого обычно происходит повышение производительности.
Давайте более подробно рассмотрим, как это работает.
Для начала рассмотрим простой синглтон с драконовской синхронизацией: