Шаблон проектирования для интерфейса, реализации которого ведут себя по-разному, если они являются частью диапазона - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть базовый класс, который выглядит примерно так ресурсы, занятые узлом (пожалуйста, игнорируйте тот факт, что это можно сделать с помощью деструкторов). Вызов любой из двух других функций после вызова delete() вызывает исключение. Эти функции безопасно вызывать при одновременных рабочих нагрузках (при этом операции чтения являются тривиально безопасными, в то время как записи должны быть сериализованы через мьютекс, поток записи или что-то подобное)

Затем у меня есть реализация этого интерфейса, которая выставляется только как часть упорядоченной структуры данных - скажем, связанный список. Однако есть одно отличие в поведении описанного выше базового класса - когда мы вызываем delete для узла, он удаляет не только узел, но и все узлы перед ним.

Существует ли особый тип шаблона проектирования, который я могу использовать, чтобы показать разницу в поведении функции delete ()? Я мог бы, например, сказать в комментариях, что экземпляры могут самопроизвольно удаляться, и что пользователям нужна внешняя синхронизация (например, из реализации связанного списка), но не уверен, является ли это лучшим решением (возможно, какой-то запрос возможностей уместно здесь?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...