В чем разница между шаблонами дизайна и архитектурными шаблонами? - PullRequest
104 голосов
/ 22 ноября 2010

Когда мы читаем о шаблонах проектирования в Интернете, мы отмечаем, что есть 3 категории:

  • Творческие
  • Структурные
  • Поведенческие

Но когда мы создаем архитектуру программного обеспечения, мы думаем о MVP, MVC или MVVM.

Например, среди шаблонов создания я обнаружил шаблон singleton , но я также использовал синглтон в своем MPV.

Итак, мой вопрос: является ли шаблон дизайна всей структурой продукта?

  • Если да, то как синглтон может быть шаблоном дизайна?Потому что я могу использовать его где угодно в моем приложении.В основном, это ограничено только для создания одного экземпляра за раз в памяти, но разве эта концепция не определяет, как проектируется программное обеспечение?

  • Если нет, то где находятся MVP, MVC иMVVM в трех категориях моделей?И в чем разница между дизайном и архитектурой программного обеспечения?

Ответы [ 5 ]

156 голосов
/ 22 ноября 2010

Требуется подробное объяснение, но я постараюсь наметить различия, насколько мне известно.

Шаблоны - это дистиллированная общность, которую вы найдете в программах. Это позволяет нам деконструировать большую сложную структуру и строить, используя простые детали. Это обеспечивает общее решение для класса проблем.

Большое сложное программное обеспечение проходит серию деконструкций на разных уровнях. На большом уровне архитектурные образцы - инструменты. На более низком уровне шаблоны проектирования - это инструменты, а на уровне реализации - инструменты программирования.

Шаблон может встречаться на самых разных уровнях. См. Фракталы . Быстрая сортировка, сортировка слиянием - это все алгоритмические шаблоны для организации группы элементов в порядке.

Для наиболее упрощенного вида:

 Programming paradigms   Specific to programming language
 ......................
 Design patterns         Solves reoccurring problems in software construction
 ......................
 Architectural patterns  Fundamental structural organization for software systems
 ......................

Идиомы - это методы программирования, специфичные для парадигм и языков, которые заполняют детали низкого уровня.

Шаблоны проектирования обычно связаны с общностью уровня кода. Он предоставляет различные схемы для уточнения и построения небольших подсистем. Обычно это зависит от языка программирования. Некоторые паттерны становятся незначительными из-за языковых парадигм . Шаблоны проектирования - это тактика среднего масштаба, которая раскрывает некоторые структуры и поведения сущностей и их взаимосвязи.

В то время как архитектурные шаблоны рассматриваются как общность на более высоком уровне, чем шаблоны проектирования. Архитектурные шаблоны - это стратегии высокого уровня, которые касаются крупномасштабных компонентов, глобальных свойств и механизмов системы.

Как получаются шаблоны? Через:

  1. повторное использование,
  2. классификация
  3. и, наконец, абстракция для выявления общности.

Если вы следовали изложенным выше мыслям. Вы увидите, что Singleton - это «шаблон проектирования», а MVC - один из «архитектурных» шаблонов для решения проблем.

Попробуйте прочитать на:

  1. http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
  2. http://en.wikipedia.org/wiki/Design_pattern
  3. http://en.wikipedia.org/wiki/Anti-pattern
8 голосов
/ 17 ноября 2015

Шаблоны проектирования - это хорошо известные шаблоны для решения технических проблем, которые зарекомендовали себя много раз.Шаблоны проектирования - это общие структуры и методы проектирования, которые используются для создания многоразового объектно-ориентированного программного обеспечения.Примерами шаблонов проектирования являются Factory Pattern, Singleton, Facade, State и т. Д. Шаблоны проектирования могут использоваться для решения более мелких проблем во всем приложении, и их гораздо проще внедрить, изменить, добавить, чем общие шаблоны архитектуры

архитектурыхорошо известные шаблоны для решения проблем архитектуры приложений.Архитектура прикладного программного обеспечения - это процесс определения структурированного решения, которое отвечает всем техническим и эксплуатационным требованиям.Архитектура приложения - это общая «организация» кода.Примерами различных архитектур могут быть MVC, MVVM, MVP, n-слой (т. Е. UI-BLL-DAL) и т. Д. Архитектура обычно должна решаться заранее, и ее часто сложно изменить после создания приложения.

1 голос
/ 28 марта 2018

Архитектурные элементы имеют тенденцию к коллекциям классов или модулей, обычно представляемых в виде блоков. Диаграммы об архитектуре представляют самый высокий уровень, смотрящий вниз, тогда как диаграммы классов находятся на самом атомном уровне. Целью архитектурных шаблонов является понимание того, как основные части системы сочетаются друг с другом, как сообщения и данные проходят через систему, а также другие структурные проблемы. В шаблонах архитектуры используются различные типы компонентов, каждый из которых обычно состоит из последовательно меньших модулей. Каждый компонент несет ответственность в рамках архитектуры Шаблоны проектирования - это шаблоны проектирования низкого уровня или уровня класса для более мелких частиц приложений.

Для получения дополнительной информации: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns

0 голосов
/ 12 июля 2019

Шаблоны проектирования отличаются от архитектурных шаблонов своей областью применения, они более локализованы, они оказывают меньшее влияние на базу кода, они влияют на определенный раздел базы кода, например:

How to instantiate an object when we only know what type needs to be instantiated at run time (maybe a Factory Class?)
How to make an object behave differently according to its state (maybe a state machine, or a Strategy Pattern?)

Архитектурные паттерны оказывают значительное влияние на базу кода, чаще всего влияя на все приложение по горизонтали (т.е., как структурировать код внутри слоя) или по вертикали (т.е., как запрос обрабатывается из внешних слоев в внутренние слои и спина). Примеры архитектурных шаблонов: модель-вид-контроллер, модель-вид-видModel

0 голосов
/ 22 ноября 2010

Ну, для основной части это вопрос языка.Согласно моему опыту, граница между дизайном и архитектурой, что касается программного обеспечения, представляет собой широкую реку, ширина которой зависит от уровня воды, что, в свою очередь, в основном зависит от времени года маркетинга.Обычно термин «дизайн» используется с сильным аспектом поведения программного продукта, признанным конечными пользователями, тогда как «архитектура» обозначает техническую структуру программного обеспечения, то есть компоненты, библиотеки, протоколы и все, что нужно для выполнениядизайн.«Шаблоны проектирования» играют две роли: во-первых, они рассматриваются как лучшие практики для решения категории (более или менее) стандартных задач, а не продуктов;Во-вторых, они помогают разработчикам общаться.Оставаясь на вашем примере синглтона, он позволяет нам узнать, что такое механика, просто используя слово, вместо того, чтобы каждый раз объяснять, что мы создали отдельный экземпляр, используя назначенное пространство данных (переменную или что-то еще), которое установленоконтролируемым образом и гарантированно будет единственным, потому что мы защитили конструктор класса и т. д. Поэтому ИМХО короткий ответ на ваш вопрос: это зависит от того, кто говорит.Имеет ли это какой-то смысл?

...