Когда мы читаем о шаблонах проектирования в Интернете, мы отмечаем, что есть 3 категории:
- Творения
- структурная
- поведенческий
Но когда мы создаем архитектуру программного обеспечения, мы думаем о MVP, MVC или MVVM.
Например, среди шаблонов создания я нашел шаблон синглтона , но я также использовал синглтон в своем MPV.
Итак, мой вопрос: является ли шаблон проектирования всей структурой продукта?
Если да, то как синглтон может быть шаблоном проектирования? Потому что я могу использовать его где угодно в моем приложении. По сути, можно создавать в памяти только один экземпляр за раз, но разве эта концепция не определяет, как разрабатывается программное обеспечение?
Если нет, то где MVP, MVC и MVVM в трех категориях шаблонов? А в чем разница между дизайном и архитектурой ПО?
design-patterns
architecture
Дживан Бхатт
источник
источник
Ответы:
Это требует подробного объяснения, но я постараюсь обрисовать различия, насколько мне известно.
Шаблоны - это квинтэссенция общности, которую вы найдете в программах. Это позволяет нам разбирать большие сложные конструкции и строить их из простых частей. Он предоставляет общее решение для определенного класса проблем.
Большое сложное программное обеспечение проходит серию деконструкций на разных уровнях. На большом уровне инструменты - это архитектурные шаблоны. На меньшем уровне шаблоны проектирования - это инструменты, а на уровне реализации парадигмы программирования - это инструменты.
Шаблон может возникать на самых разных уровнях. См. Фракталы . Быстрая сортировка, сортировка слиянием - все это алгоритмические шаблоны для организации группы элементов по порядку.
Для наиболее упрощенного представления:
Идиомы - это специфичные для парадигмы и языка методы программирования, которые заполняют детали низкого уровня.
Шаблоны проектирования обычно связаны с общностью на уровне кода. Он предоставляет различные схемы для доработки и построения более мелких подсистем. Обычно на это влияет язык программирования. Некоторые закономерности становятся незначительными из-за языковых парадигм . Шаблоны проектирования - это тактики среднего масштаба, которые конкретизируют структуру и поведение сущностей и их взаимосвязей.
В то время как архитектурные шаблоны рассматриваются как общность на более высоком уровне, чем шаблоны проектирования. Архитектурные шаблоны - это стратегии высокого уровня, которые касаются крупномасштабных компонентов, глобальных свойств и механизмов системы.
Как получаются выкройки? Через:
Если вы следовали изложенным выше мыслям. Вы увидите, что синглтон - это «шаблон проектирования», а MVC - один из «архитектурных» шаблонов для разделения задач.
Попробуйте прочитать:
источник
Шаблоны проектирования - это хорошо известные шаблоны для решения технических проблем, которые многократно зарекомендовали себя. Шаблоны проектирования - это общие структуры и методы проектирования, которые позволяют создавать объектно-ориентированное программное обеспечение многократного использования. Примеры шаблонов проектирования: Factory Pattern, Singleton, Facade, State и т. Д. Шаблоны проектирования могут использоваться для решения небольших проблем во всем приложении, и их гораздо проще внедрять, изменять и добавлять, чем общую архитектуру.
шаблоны архитектуры - это хорошо известные шаблоны для решения проблем архитектуры программных приложений. Архитектура программного приложения - это процесс определения структурированного решения, отвечающего всем техническим и эксплуатационным требованиям. Архитектура приложения - это общая «организация» кода. Примерами различных архитектур могут быть MVC, MVVM, MVP, n-уровень (например, UI-BLL-DAL) и т. Д. Архитектура, как правило, должна быть определена заранее, и ее часто трудно изменить после создания приложения.
источник
Архитектурные элементы имеют тенденцию к коллекциям классов или модулей, обычно представленных в виде блоков. Диаграммы об архитектуре представляют собой самый высокий уровень, смотрящий вниз, тогда как диаграммы классов находятся на самом атомарном уровне. Целью архитектурных шаблонов является понимание того, как основные части системы сочетаются друг с другом, как сообщения и данные проходят через систему, и другие структурные проблемы. В шаблонах архитектуры используются различные типы компонентов, каждый из которых обычно состоит из последовательно уменьшающихся модулей. Каждый компонент отвечает за архитектуру. Шаблоны проектирования - это шаблоны проектирования низкого уровня или уровня класса для более мелких частиц приложений.
Для получения дополнительной информации: https://www.oreilly.com/ideas/contrasting-architecture-patterns-with-design-patterns.
источник
Ну по большей части дело в языке. По моему опыту, граница между дизайном и архитектурой в том, что касается программного обеспечения, - это широкая река, ширина которой обусловлена уровнем воды, который, в свою очередь, в основном зависит от сезонов маркетинга. Обычно термин «дизайн» используется с сильным аспектом поведения программного продукта, признанным конечными пользователями, тогда как «архитектура» означает техническую структуру программного обеспечения, то есть компоненты, библиотеки, протоколы и все, что необходимо для выполнения дизайн. «Шаблоны проектирования» играют две роли: во-первых, они рассматриваются как лучшие практики для решения категории (более или менее) стандартных проблем, а не продуктов; Во-вторых, они помогают разработчикам общаться. Оставаясь с вашим примером синглтона, он позволяет нам узнать, в чем суть механики, просто используя слово вместо того, чтобы каждый раз объяснять, что мы создали единственный экземпляр, используя назначенное пространство данных (переменную или что-то еще), которое устанавливается контролируемым образом и гарантированно единственный, потому что мы защитили конструктор класса и т. д. Итак, ИМХО, краткий ответ на ваш вопрос: это зависит от того, кто говорит. В этом есть смысл?
источник
Шаблоны проектирования отличаются от архитектурных шаблонов по своему объему, они более локализованы, они меньше влияют на базу кода, они влияют на конкретный раздел базы кода, например:
Архитектурные шаблоны оказывают сильное влияние на базу кода, чаще всего влияя на все приложение либо по горизонтали (т.е. как структурировать код внутри слоя), либо по вертикали (т.е. как запрос обрабатывается из внешних слоев во внутренние уровни и назад). Примеры архитектурных паттернов: модель-представление-контроллер, модель-представление-ViewModel
источник