UML и паттерны проектирования — это одно и то же?
Вы путаете теплое с мягким.
UML - это язык для рисования схем, которым пользуются для того, чтобы нарисовать классы и их взаимосвязь. С паттернами программирования никак не связано.
Паттерны программирования - это архитектурное решение популярных задач, чтобы не изобретать велосипед, которое не имеет отношение к языку программирования. Просто у вас есть некая задача, вы придумаваете алгоритм, который ее решает. Паттерны позволяют вам не выдумывать алгоритм, а глянуть - вдруг подобные задачи уже до вас решали, и есть подходящие паттерны. После чего на нужном языке вы этот паттерн реализуете. А если коллектив большой, то общаясь с коллегами вы не будете им полтора часа рассказывать идею, а просто назовете имя паттерна и все кто с ними знаком вас поймут с полуслова.
UML - это язык. Паттерны - это шаблоны. UML используется для описания функциональных блоков программного продукта, их взаимодействия. Паттерны проектирования - это варианты этих самых блоков и их взаимодействия. UML используется в т.ч. для описания паттернов. Соответственно вы сначала выбираете паттерн, а на его основе описываете всю структуру средствами UML.