Подтвердить что ты не робот

Какая разница между шаблонами дизайна и архитектурными узорами?

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

Ну, для основной части это вопрос языка. По моему опыту, граница между дизайном и архитектурой, в том, что касается программного обеспечения, представляет собой широкую реку с ее шириной, обусловленной уровнем воды, который, в свою очередь, в основном зависит от сезонов маркетинга. Как правило, термин "дизайн" используется с сильным аспектом поведения программного продукта, признанным конечными пользователями, тогда как "архитектура" означает техническую структуру программного обеспечения, т.е. е. компоненты, библиотеки, протоколы и все, что ему нужно для выполнения дизайна. "Шаблоны проектирования" выполняют две роли: 1-е они рассматриваются как наилучшие методы решения категории (более или менее) стандартных проблем, а не prodiucts; 2nd они помогают разработчикам общаться. Пребывая с вашим примером Singleton, он позволяет нам знать, что такое механика, просто используя слово, вместо того, чтобы каждый раз объяснять, что мы создали один экземпляр, используя назначенный dataspace (переменный или любой другой), который установлен в контролируется и гарантированно будет единственным, потому что мы защитили конструктор класса и т.д. Поэтому ИМХО короткий ответ на ваш вопрос: это зависит от того, кто говорит. Это имеет смысл?

Ответ 5

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

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?)

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