Я бы предложил создать новый класс, а не подклассовую очередь, поскольку класс очереди ограниченной длины не должен передаваться в код, который может вызывать старый метод enqueue.Есть ряд логических вещей, которые может сделать очередь, если пуш происходит при заполнении:
- Бросить исключение при нажатии
- Дождаться чтения элемента
- Удалить самый старый элемент
- Отбросить новый элемент
- Недействительная очередь, так что она вызовет исключение при следующем чтении, но вернется из толчка;дальнейшие толчки станут бездействующими.
Может быть полезно создать наследуемый базовый класс, а затем создать производные классы, которые реализуют определенные поведения.Таким образом, методы, которые заботятся о проблемном сценарии, могут требовать класс, который обещает обрабатывать его правильно.Обратите внимание, что последний сценарий может показаться странным, но бывают случаи, когда он подходит, например, обработчик событий помещает данные в очередь для обработки какой-либо другой задачи.Если очередь достаточно велика, чтобы она никогда не переполнялась, но задача чтения блокируется, может быть нежелательно, чтобы такая блокировка возвращалась отправителю события.