Паттерны встречаются на многих уровнях. Архитектурные шаблоны (то есть архитектурные стили), как правило, являются самыми большими по объему и охватывают фундаментальную организацию системы. Шаблоны проектирования находятся на уровне нескольких взаимодействующих объектов. Предложение Бернда о моделях Фаулера и других предприятий является хорошим. Просто поймите, что эти шаблоны имеют тенденцию быть более конкретными, чем эти архитектурные шаблоны:
- Слоистый (т. Е. Шаблон виртуальной машины)
- Большой Грязевой Шар
- Труба и фильтр
- Пакетная Sequential
- Ориентированный на модель (общие данные)
- Публикация-Subscribe
- Клиент-сервер (и N-уровень)
- Peer-равному
- MapReduce
Шаблоны архитектуры чаще всего применяются к структуре времени выполнения системы, но также могут применяться к ее модулям или ее аппаратному распределению. Одна распространенная ошибка состоит в том, что шаблон Layered применяется к среде выполнения, когда он действительно применяется к системным модулям (т. Е. К зависимостям времени компиляции). Конечно, вы можете отразить структуру вашего модуля во время выполнения
Эти шаблоны подробно обсуждаются в моей книге Just Enough Software Architecture, Fairbanks (2010) . Большинство из них также описаны в других книгах, включая Garlan & Shaw (1996) , Taylor, Medvidovic, & Dashovy (2009) и Документирование архитектур программного обеспечения (SEI, 2010) ) .
Со списком имен шаблонов вы сможете найти множество веб-страниц (я пометил это как вики сообщества, чтобы мы могли добавить эти ссылки). Книги также полезны, потому что они дают вам более полное представление о том, как использовать шаблоны.