Главная » 2015 » Июнь » 21 » Паттерны проектирования на платформе .NET
20:54
Паттерны проектирования на платформе .NET
Паттерны проектирования на платформе .NET — Паттерны проектирования остаются важным инструментом в арсенале разработчика, поскольку они опираются на фундаментальные принципы проектирования. Тем не менее, появление новых конструкций в современных языках программирования делает одни паттерны более важными, а значимость других сводит к минимуму.
Название: Паттерны проектирования на платформе .NET Автор: Тепляков С. Издательство: Питер Год: 2015 Страниц: 320 Формат: PDF Размер: 4,45 МБ ISBN: 978-5-496-01649-0 Качество: Отличное Язык: Русский
Содержание:
Об авторе Кому адресована эта книга Как читать эту книгу Отзывы Благодарности От издательства Предисловие GoF-паттерны на платформе .NET Отношение к паттернам проектирования Фреймворки паттернов Гибкость vs.. конкретность Для чего нужна еще одна книга о паттернах Часть I. Паттерны поведения Глава 1. Паттерн «Стратегия» (Strategy) Мотивация Варианты реализации в .NET Обсуждение паттерна «Стратегия» Выделять интерфейс или нет Интерфейс vs.. делегат Применимость Примеры в .NET Framework Глава 2. Паттерн «Шаблонный метод» (Template Method) Мотивация Варианты реализации в .NET Локальный шаблонный метод на основе делегатов Шаблонный метод на основе методов расширения Обсуждение паттерна «Шаблонный метод» Изменение уровня абстракции Стратегия vs.. шаблонный метод Шаблонный метод и обеспечение тестируемости Шаблонный метод и контракты Применимость Примеры в .NET Framework Глава 3. Паттерн «Посредник» (Mediator) Мотивация Обсуждение паттерна «Посредник» Явный и неявный посредник Явные и неявные связи Тестировать или не тестировать? Вот в чем вопрос! Архитектурные посредники Применимость Когда третий лишний Примеры в .NET Framework Глава 4. Паттерн «Итератор» (Iterator) Мотивация Обсуждение Особенности итераторов в C#/ .NET «Ленивость» итераторов Использование итераторов в цикле foreach Итераторы или генераторы Валидность итераторов Итераторы и структуры Push-based-итераторы Применимость Примеры в .NET Framework Глава 5. Паттерн «Наблюдатель» (Observer) Общие сведения Мотивация Варианты реализации Методы обратного вызова События Строго типизированный наблюдатель IObserver/IObservable Обсуждение паттерна «Наблюдатель» Выбор варианта реализации «Наблюдателя» Делегаты События Наблюдатель в виде специализированного интерфейса Сколько информации передавать наблюдателю Наблюдатели и утечки памяти Применимость Примеры в .NET Framework Глава 6. Паттерн «Посетитель» (Visitor) Мотивация Обсуждение Функциональная vs. Объектная версия Двойная диспетчеризация Интерфейс vs. абстрактный класс посетителя Применимость Примеры в .NET Framework Глава 7. Другие паттерны поведения Паттерн «Команда» Паттерн «Состояние» Паттерн «Цепочка обязанностей» Часть II. Порождающие паттерны Глава 8. Паттерн «Синглтон» (Singleton) Мотивация Варианты реализации в .NET Реализация на основе Lazy of T Блокировка с двойной проверкой Реализация на основе инициализатора статического поля Обсуждение паттерна «Синглтон» Singleton vs. Ambient Context Singleton vs. Static Class Особенности и недостатки Применимость: паттерн или антипаттерн Примеры в .NET Framework Дополнительные ссылки Глава 9. Паттерн «Абстрактная фабрика» (Abstract Factory) Мотивация Обсуждение паттерна «Абстрактная фабрика» Проблема курицы и яйца Обобщенная абстрактная фабрика Применимость паттерна «Абстрактная фабрика» Примеры в .NET Framework Глава 10. Паттерн «Фабричный метод» (Factory Method) Мотивация Диаграмма паттерна «Фабричный метод» Классическая реализация Статический фабричный метод Полиморфный фабричный метод Варианты реализации Использование делегатов в статической фабрике Обобщенные фабрики Обсуждение паттерна «Фабричный метод» Сокрытие наследования Устранение наследования Использование Func в качестве фабрики Конструктор vs. фабричный метод Применимость паттерна «Фабричный метод» Применимость классического фабричного метода Применимость полиморфного фабричного метода Применимость статического фабричного метода Примеры в .NET Framework Глава 11. Паттерн «Строитель» (Builder) Мотивация Особенности реализации в .NET Использование текучего интерфейса Методы расширения Обсуждение паттерна «Строитель» Строго типизированный строитель Создание неизменяемых объектов Частичная изменяемость Применимость Примеры в .NET Framework Часть III. Структурные паттерны Глава 12. Паттерн «Адаптер» (Adapter) Мотивация Обсуждение паттерна «Адаптер» Адаптер классов и объектов Адаптивный рефакторинг Языковые адаптеры Применимость Примеры в .NET Framework Глава 13. Паттерн «Фасад» (Facade) Мотивация Обсуждение паттерна «Фасад» Инкапсуляция стороннего кода Повышение уровня абстракции Применимость Примеры в .NET Framework Глава 14. Паттерн «Декоратор» (Decorator) Мотивация Обсуждение паттерна «Декоратор» Композиция vs. наследование Инициализация декораторов Недостатки декораторов Генерация декораторов Применимость Примеры в .NET Framework Глава 15. Паттерн «Компоновщик» (Composite) Мотивация Обсуждение паттерна «Компоновщик» Применимость Примеры в .NET Framework Глава 16. Паттерн «Заместитель» (Proxy) Мотивация Обсуждение паттерна «Заместитель» Прозрачный удаленный заместитель Заместитель vs. декоратор Виртуальный заместитель и Lazy<T> Применимость Примеры в .NET Framework Часть IV. Принципы проектирования Глава 17. Принцип единственной обязанности Для чего нужен SRP Принцип единственной обязанности на практике Типичные примеры нарушения SRP Выводы Глава 18. Принцип «открыт/закрыт» Путаница с определениями Какую проблему призван решить принцип «открыт/закрыт» Принцип «открыт/закрыт» на практике Закрытость интерфейсов Открытость поведения Принцип единственного выбора Расширяемость: объектно-ориентированный и функциональный подходы Типичные примеры нарушения принципа «открыт/закрыт» Выводы Глава 19. Принцип подстановки Лисков Для чего нужен принцип подстановки Лисков Классический пример нарушения: квадраты и прямоугольники Принцип подстановки Лисков и контракты О сложностях наследования в реальном мире Когда наследования бывает слишком мало Принцип подстановки Лисков на практике Типичные примеры нарушения LSP Выводы Дополнительные ссылки Глава 20. Принцип разделения интерфейсов Для чего нужен принцип разделения интерфейса SRP vs. ISP Принцип разделения интерфейсов на практике Типичные примеры нарушения ISP Выводы Глава 21. Принцип инверсии зависимостей Интерфейсы Слои Наблюдатели Для чего нужен принцип инверсии зависимостей Остерегайтесь неправильного понимания DIP Тестируемость решения vs. подрыв инкапсуляции Принцип инверсии зависимостей на практике Примеры нарушения принципа инверсии зависимостей Выводы Дополнительные ссылки Глава 22. Размышления о принципах проектирования Использование принципов проектирования Правильное использование принципов проектирования Антипринципы проектирования Заключение Источники информации Книги о дизайне и ООП Статьи