Цель лабораторной работы:
Разработать программу, реализующую игру в блэкджек с использованием порождающих паттернов проектирования.
Функциональные требования:
- Игроки могут присоединяться к игре, выбирать размер ставки и играть в игру.
 
- Для раздачи карт игрокам должен использоваться функционал, написанный в лабораторной работе 1.
 
- Должны быть реализованы правила блэкджека: игроки получают две карты, дилер получает одну карту; игроки могут брать дополнительные карты, пока не наберут более 21 очка; дилер должен брать карты, пока не наберет 17 очков или больше; при сумме очков более 21 игрок проигрывает, при сумме очков более 17, но меньше 21, дилер останавливается и происходит сравнение очков.
 
- Менять реализацию диллера нельзя.
 
- Должна быть реализована логика ставок: при выигрыше игрок получает в два раза больше своей ставки, при проигрыше ставка снимается.
 
Требования к проверке:
- Необходимо реализовать тесты для всех методов, чтобы убедиться в корректности работы программы.
 
- Код должен быть написан с использованием принципов объектно-ориентированного программирования, в том числе SOLID.
 
- Для реализации могут использоваться следующие паттерны: фабричный метод, абстрактная фабрика, строитель, прототип.
 
- Лабораторная работа должна быть выполнена в соответствии с принятыми стандартами оформления кода и комментирования.