Джошуа Блох - Java: эффективное программирование
3-е изданиеНазвание: | Java: эффективное программирование | |
Автор: | Джошуа Блох | |
Жанр: | Программирование: прочее, Java, Java Script | |
Изадано в серии: | неизвестно | |
Издательство: | Диалектика | |
Год издания: | 2019 | |
ISBN: | 978-5-6041394-4-8 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Java: эффективное программирование"
Аннотация к этой книге отсутствует.
Читаем онлайн "Java: эффективное программирование". [Страница - 19]
служебные классы и синглтоны непри
годны для классов, поведение которых параметризовано лежащим в их
основе ресурсом.
Что на самом деле требуется — это возможность поддержки нескольких эк
земпляров класса (в нашем примере — класса Spellchecker), каждый из ко
торых использует необходимый клиенту ресурс (в нашем примере — словарь).
Простая схема, удовлетворяющая этому требованию — передача ресурса кон
структору при создании нового экземпляра. Это одна из форм внедрения
зависимостей (dependency injection): словарь является зависимостью класса
проверки орфографии, которая внедряется в класс при его создании.
// Внедрение зависимостей обеспечивает гибкость и тестируемость
public class Spellchecker
(
private final Lexicon dictionary;
public Spellchecker(Lexicon dictionary)
{
this.dictionary = Objects.requireNonNull(dictionary);
}
public boolean isValid(String word)
(
)
2.5. ПРЕДПОЧИТАЙТЕ ВНЕДРЕНИЕ ЗАВИСИМОСТЕЙ ЖЕСТКО ПРОШИТЫМ РЕСУРСАМ
49
public List suggestions(String typo)
{
I
}
Схема внедрения зависимостей настолько проста, что многие программи
сты годами используют ее, даже не подозревая, что она имеет собственное
имя. Хотя наш пример с проверкой орфографии использует только один ресурс
(словарь), внедрение зависимостей работает с произвольным количеством ре
сурсов и произвольными графами зависимостей. Он сохраняет неизменность
классов (раздел 4.3), так что несколько клиентов могут совместно использовать
зависимые объекты (в предположении, что клиентам нужны одни и те же ба
зовые ресурсы). Внедрение зависимостей в равной степени применимо к кон
структорам, статическим фабрикам (раздел 2.1) и строителям (раздел 2.2).
Полезная разновидность схемы состоит в передаче конструктору фабрики
ресурсов. Фабрика — это объект, который может многократно вызываться для
создания экземпляров типа. Такие фабрики воплощают проектный шаблон Фа
бричный метод [12]. Интерфейс Supplier, введенный в Java 8, идеально
подходит для представления фабрики. Методы, получающие Supplier в
качестве входных данных, обычно должны ограничивать параметр типа фабри
ки с помощью ограниченного подстановочного типа (bounded wildcard type)
(раздел 5.6), чтобы позволить клиенту передать фабрику, которая создает любой
подтип указанного типа. Например, вот метод, который создает мозаику с ис
пользованием клиентской фабрики для производства каждой плитки мозаики:
Mosaic create(Supplier --">
годны для классов, поведение которых параметризовано лежащим в их
основе ресурсом.
Что на самом деле требуется — это возможность поддержки нескольких эк
земпляров класса (в нашем примере — класса Spellchecker), каждый из ко
торых использует необходимый клиенту ресурс (в нашем примере — словарь).
Простая схема, удовлетворяющая этому требованию — передача ресурса кон
структору при создании нового экземпляра. Это одна из форм внедрения
зависимостей (dependency injection): словарь является зависимостью класса
проверки орфографии, которая внедряется в класс при его создании.
// Внедрение зависимостей обеспечивает гибкость и тестируемость
public class Spellchecker
(
private final Lexicon dictionary;
public Spellchecker(Lexicon dictionary)
{
this.dictionary = Objects.requireNonNull(dictionary);
}
public boolean isValid(String word)
(
)
2.5. ПРЕДПОЧИТАЙТЕ ВНЕДРЕНИЕ ЗАВИСИМОСТЕЙ ЖЕСТКО ПРОШИТЫМ РЕСУРСАМ
49
public List suggestions(String typo)
{
I
}
Схема внедрения зависимостей настолько проста, что многие программи
сты годами используют ее, даже не подозревая, что она имеет собственное
имя. Хотя наш пример с проверкой орфографии использует только один ресурс
(словарь), внедрение зависимостей работает с произвольным количеством ре
сурсов и произвольными графами зависимостей. Он сохраняет неизменность
классов (раздел 4.3), так что несколько клиентов могут совместно использовать
зависимые объекты (в предположении, что клиентам нужны одни и те же ба
зовые ресурсы). Внедрение зависимостей в равной степени применимо к кон
структорам, статическим фабрикам (раздел 2.1) и строителям (раздел 2.2).
Полезная разновидность схемы состоит в передаче конструктору фабрики
ресурсов. Фабрика — это объект, который может многократно вызываться для
создания экземпляров типа. Такие фабрики воплощают проектный шаблон Фа
бричный метод [12]. Интерфейс Supplier, введенный в Java 8, идеально
подходит для представления фабрики. Методы, получающие Supplier в
качестве входных данных, обычно должны ограничивать параметр типа фабри
ки с помощью ограниченного подстановочного типа (bounded wildcard type)
(раздел 5.6), чтобы позволить клиенту передать фабрику, которая создает любой
подтип указанного типа. Например, вот метод, который создает мозаику с ис
пользованием клиентской фабрики для производства каждой плитки мозаики:
Mosaic create(Supplier --">
Книги схожие с «Java: эффективное программирование» по жанру, серии, автору или названию:
Сенько Евгений Владимирович - Программирование приложений для мобильных устройств под управлением Android. Часть 1. Жанр: Java, Java Script |
Александр Анатольевич Сорокин - Объектно-ориентированное программирование. LAZARUS (Free Pascal): лабораторный практикум Жанр: Pascal, Delphi, Lazarus и т.п. Год издания: 2014 |
Александр Николаевич Андрианов, Сергей Павлович Бычков, Александр Иванович Хорошилов - Программирование на языке Симула-67 Жанр: Другие языки и системы программирования Год издания: 1985 Серия: Библиотечка программиста |
Томас Уорт - Программирование на языке БЭЙСИК Жанр: Программирование: прочее Год издания: 1981 |