Требуется подробное объяснение, но я постараюсь наметить различия, насколько мне известно.
Шаблоны - это дистиллированная общность, которую вы найдете в программах. Это позволяет нам деконструировать большую сложную структуру и строить, используя простые детали. Это обеспечивает общее решение для класса проблем.
Большое сложное программное обеспечение проходит серию деконструкций на разных уровнях. На большом уровне архитектурные образцы - инструменты. На более низком уровне шаблоны проектирования - это инструменты, а на уровне реализации - инструменты программирования.
Шаблон может встречаться на самых разных уровнях. См. Фракталы . Быстрая сортировка, сортировка слиянием - это все алгоритмические шаблоны для организации группы элементов в порядке.
Для наиболее упрощенного вида:
Programming paradigms Specific to programming language
......................
Design patterns Solves reoccurring problems in software construction
......................
Architectural patterns Fundamental structural organization for software systems
......................
Идиомы - это методы программирования, специфичные для парадигм и языков, которые заполняют детали низкого уровня.
Шаблоны проектирования обычно связаны с общностью уровня кода. Он предоставляет различные схемы для уточнения и построения небольших подсистем. Обычно это зависит от языка программирования. Некоторые паттерны становятся незначительными из-за языковых парадигм .
Шаблоны проектирования - это тактика среднего масштаба, которая раскрывает некоторые структуры и поведения сущностей и их взаимосвязи.
В то время как архитектурные шаблоны рассматриваются как общность на более высоком уровне, чем шаблоны проектирования.
Архитектурные шаблоны - это стратегии высокого уровня, которые касаются крупномасштабных компонентов, глобальных свойств и механизмов системы.
Как получаются шаблоны?
Через:
- повторное использование,
- классификация
- и, наконец, абстракция для выявления общности.
Если вы следовали изложенным выше мыслям. Вы увидите, что Singleton - это «шаблон проектирования», а MVC - один из «архитектурных» шаблонов для решения проблем.
Попробуйте прочитать на:
- http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
- http://en.wikipedia.org/wiki/Design_pattern
- http://en.wikipedia.org/wiki/Anti-pattern