Паттерни або шаблони проектування програмного забезпечення - це своєрідні групи вказівок спрямовані на полегшення вирішення задач об'єктно-орієнтованого програмування (в нашому випадку). Шаблон не можна вважати закінченим зразком, що не дозволяє проводити його трансляцію в код програми. Такі шаблони зазвичай служать прикладами для рішення певної задачі та ілюструють відношення між класами і об'єктами, проте не вказують як реалізувати саме відношення.