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