Это требует подробного объяснения, но я постараюсь обрисовать различия, насколько мне известно.
Шаблоны - это квинтэссенция общности, которую вы найдете в программах. Это позволяет нам разбирать большие сложные конструкции и строить их из простых частей. Он предоставляет общее решение для определенного класса проблем.
Большое сложное программное обеспечение проходит серию деконструкций на разных уровнях. На большом уровне инструменты - это архитектурные шаблоны. На меньшем уровне шаблоны проектирования - это инструменты, а на уровне реализации парадигмы программирования - это инструменты.
Шаблон может возникать на самых разных уровнях. См. Фракталы . Быстрая сортировка, сортировка слиянием - все это алгоритмические шаблоны для организации группы элементов по порядку.
Для наиболее упрощенного представления:
- Парадигмы программирования - специфические для языка программирования
- Шаблоны проектирования - решает повторяющиеся проблемы при создании программного обеспечения.
- Архитектурные шаблоны - фундаментальная структурная организация программных систем
Идиомы - это специфичные для парадигмы и языка методы программирования, которые заполняют детали низкого уровня.
Шаблоны проектирования обычно связаны с общностью на уровне кода. Он предоставляет различные схемы для доработки и построения более мелких подсистем. Обычно на это влияет язык программирования. Некоторые закономерности становятся незначительными из-за языковых парадигм . Шаблоны проектирования - это тактики среднего масштаба, которые конкретизируют структуру и поведение сущностей и их взаимосвязей.
В то время как архитектурные шаблоны рассматриваются как общность на более высоком уровне, чем шаблоны проектирования. Архитектурные шаблоны - это стратегии высокого уровня, которые касаются крупномасштабных компонентов, глобальных свойств и механизмов системы.
Как получаются выкройки? Через:
- повторное использование,
- классификация
- и, наконец, абстракция, чтобы выявить общность.
Если вы следовали изложенным выше мыслям. Вы увидите, что синглтон - это «шаблон проектирования», а MVC - один из «архитектурных» шаблонов для разделения задач.
Попробуйте прочитать:
- http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)
- http://en.wikipedia.org/wiki/Design_pattern
- http://en.wikipedia.org/wiki/Anti-pattern