В чем разница между шаблонами проектирования и архитектурными шаблонами?
когда мы читаем о шаблоны проектирования в интернете мы отмечаем, что есть 3 категории:
- Creational
- структурная
- поведения
но когда мы создаем архитектуру программного обеспечения, то мы думаем о MVP, MVC или MVVM.
например, среди творческих моделей я нашел синглтон шаблон, но я также использовал синглтон в моем MPV.
Так что мой вопрос: Является ли шаблон дизайна a по всей структуре продукта?
Если да, то как синглтон может быть образцом дизайна? Потому что я могу использовать его в любом месте моего приложения. В принципе, он ограничен только для создания одного экземпляра за раз в памяти, но разве эта концепция не определяет, как разрабатывается программное обеспечение?
Если нет, то где MVP, MVC и MVVM в трех категориях шаблонов? И в чем разница между дизайном и архитектура программного обеспечения?
4 ответов:
Это требует подробного объяснения, но я постараюсь набросать различия, насколько мне известно.
Шаблоны перегоняются общности, которые вы найдете в программах. Это позволяет нам деконструировать большую сложную структуру и строить с использованием простых деталей. Это обеспечивает общее решение для класса проблем.
большое сложное программное обеспечение проходит через серию деконструкции на разных уровнях. На большом уровне, архитектурноакустические картины инструменты. На меньшем уровне шаблоны проектирования являются инструментами, а на уровне реализации-парадигмы программирования.
паттерн может возникать на самых разных уровнях. Смотрите фракталов. Быстрая сортировка, сортировка слиянием-это все алгоритмические шаблоны для организации группы элементов в порядке.
для наиболее простой вид:
Programming paradigms Specific to programming language ...................... Design patterns Solves reoccurring problems in software construction ...................... Architectural patterns Fundamental structural organization for software systems ......................идиомы являются ли парадигмальные и языковые методы программирования, которые заполняют детали низкого уровня.
шаблоны проектирования обычно связаны с общностями на уровне кода. Он обеспечивает различные схемы для уточнения и построения небольших подсистем. На это обычно влияет язык программирования. Некоторые узоры бледнеют в незначительности из-за язык парадигм. Шаблоны проектирования - это тактика среднего масштаба, которая конкретизирует некоторые структуры и поведение сущностей и их отношений.
пока архитектурные шаблоны рассматривается как общность на более высоком уровне, чем шаблоны проектирования. Архитектурные паттерны - это высокоуровневые стратегии, которые касаются крупномасштабных компонентов, глобальных свойств и механизмов системы.
Как получаются узоры? Через:
- повторное использование,
- классификация
- и, наконец, абстракция выделить общность.
Если вы следили за мыслями положенный выше. Вы увидите, что Singleton является "шаблоном дизайна", в то время как MVC является одним из "архитектурных" шаблонов для решения проблем разделения.
попробуйте почитать на:
шаблоны проектирования-это хорошо известные шаблоны для решения технических проблем способом, который зарекомендовал себя много раз. Шаблоны проектирования-это общие структуры и методы проектирования, которые позволяют создавать многоразовое объектно-ориентированное программное обеспечение. Примеры шаблонов проектирования-это заводской шаблон, Синглтон, фасад, состояние и т. д. Шаблоны проектирования могут быть использованы для решения небольших проблем во всем приложении, и гораздо проще вводить, изменять, добавлять, чем в целом архитектура
архитектурные шаблоны-это хорошо известные шаблоны для решения проблем архитектуры программных приложений. Архитектура программного приложения-это процесс определения структурированного решения, отвечающего всем техническим и эксплуатационным требованиям. Архитектура приложения - это общая "организация" кода. Примерами различных архитектур могут быть MVC, MVVM, MVP, n-layer (т. е. UI-BLL-DAL) и т. д. Архитектура обычно должна быть решена заранее и часто трудно изменить, как только приложение построено.
Ну, для основной части это вопрос языка. Согласно моему опыту, граница между дизайном и архитектурой, что касается программного обеспечения, - это широкая река, ширина которой обусловлена уровнем воды, который, в свою очередь, в основном зависит от сезонов маркетинга. Как правило, термин "дизайн" используется с сильным аспектом поведения программного продукта, признанного конечными пользователями, тогда как "архитектура" означает техническую структуру программного обеспечения, i. e. компоненты, библиотеки, протоколы и все, что нужно для выполнения проекта. "Шаблоны проектирования" выполняют две роли: во-первых, они рассматриваются как лучшие практики для решения категории (более или менее) стандартных проблем, а не продуктов; во-вторых, они помогают разработчикам общаться. Оставаясь с вашим примером Синглтона, он позволяет нам узнать, что такое механика, просто используя слово, вместо того, чтобы объяснять каждый раз, что мы создали один экземпляр с помощью назначенного пространства данных (переменная или что-то еще), которая устанавливается контролируемым образом и гарантированно является единственной, потому что мы защитили конструктор класса и т. д. Так что ИМХО короткий ответ на ваш вопрос: это зависит от того, кто говорит. В этом есть какой-то смысл?
архитектурные элементы имеют тенденцию к коллекциям классов или модулей, обычно представленных в виде коробок. Диаграммы об архитектуре представляют самый высокий уровень, глядя вниз, в то время как диаграммы классов находятся на самом атомарном уровне. Цель шаблонов архитектуры-понять, как основные части системы сочетаются друг с другом, как сообщения и данные проходят через систему и другие структурные проблемы. В шаблонах архитектуры используются различные типы компонентов, каждый из которых обычно состоит из последовательно меньших модулей. Каждый компонент несет ответственность в рамках архитектуры Шаблоны проектирования-это шаблоны проектирования низкого уровня или уровня класса для более мелких частиц приложений.
для получения дополнительной информации: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns
Comments