freeCodeCamp/guide/russian/software-engineering/design-patterns/index.md

47 lines
5.8 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
title: Design Patterns
localeTitle: Шаблоны проектирования
---
## Шаблоны проектирования
Программисты и разработчики программного обеспечения используют шаблоны проектирования для решения **общих, повторяющихся проблем** в архитектуре программного обеспечения. Шаблоны обеспечивают язык-агностический подход к **объектно-ориентированному программированию,** который помогает разработчикам следовать принципам хорошего дизайна приложений.
### Почему дизайн шаблонов?
Разработка по шаблонам проектирования имеет ряд преимуществ:
* Легче следовать хорошим принципам программирования, таким как **[принципы](https://medium.com/@cramirez92/s-o-l-i-d-the-first-5-priciples-of-object-oriented-design-with-javascript-790f6ac9b9fa) [SOLID](https://www.youtube.com/watch?v=XzdhzyAukMM) .**
* Он уменьшает куски кода, поэтому код легче **тестировать** и **отлаживать**
* Это помогает поддерживать слабосвязанный код, поэтому код проще **повторять** и **обновлять** для новых приложений
* Это упрощает **понимание** кода, поэтому новые участники могут **быстро наращивать скорость**
Использование шаблонов проектирования требует некоторых компромиссов, а разработчики, новые для практики, должны помнить следующее:
* В программировании **нет серебряных пуль** , а шаблоны проектирования не являются исключением
* Шаблоны проектирования добавляют **слой абстракции** к коду, который увеличивает первоначальный дизайн и усилия по разработке
* Чрезмерное использование шаблонов дизайна или принуждение их к установке **затрудняет** понимание кода
### Поддержка языков
Шаблоны проектирования возникли из мира статически типизированных языков, таких как C ++, Java и C #. Большинство ресурсов о разработке по шаблону проектирования основаны на одном из этих языков.
Тем не менее, шаблоны проектирования таковы: шаблоны. Они **не** являются **реализациями** , такими как классы или интерфейсы, и **не ограничены каким-либо одним языком** .
При изучении шаблонов проектирования в динамическом языке, если определенные шаблоны кажутся излишне сложными или противоречивыми, вспомните их происхождение. Разработчики на динамических языках могут по-прежнему использовать и использовать следующие шаблоны проектирования, хотя для их полного изучения может потребоваться больше исследований.
### Пользы
Конструктивные шаблоны превосходны при решении проблем основополагающего кодирования простым и повторяемым способом. В целом они делятся на три категории:
* Шаблоны **создания** описывают, как создавать новые объекты
* **Структурные** шаблоны описывают, как составлять объекты из других объектов
* **Поведенческие** модели описывают, как объекты общаются друг с другом
Эти задачи могут выполняться без шаблонов проектирования, но шаблоны проектирования **уменьшают риск того,** что вы нарушите передовую практику и создадите код, который трудно поддерживать.
#### Дополнительная информация:
* [Шаблоны дизайна](https://github.com/kamranahmedse/design-patterns-for-humans) Kamran Ahmed [для людей](https://github.com/kamranahmedse/design-patterns-for-humans) - отличное введение в конкретные шаблоны
* [Design Patterns](https://en.wikipedia.org/wiki/Design_Patterns) - это книга, которая начала эту практику
* [Шаблоны Enterprise Application Architecture от](https://martinfowler.com/eaaCatalog/) Martin Fowler предоставляют набор более сложных шаблонов для корпоративных приложений
* Sourcemaking предоставляет [онлайн-ресурс](https://sourcemaking.com/design_patterns) дополнительные примеры и информацию о шаблонах проектирования