(0) есть 1000 и 1 вариация на эту тему.
вся логика сводится к следующему:
1. юзер при наличии прав или через привилегированный режим может вызвать объект.удалить()
2. юзер при наличии прав или через привилегированный режим может посмотреть наличие ссылок на объект. (ссылочная целостность)
монопольность тут нужна только чтобы другие юзеры в то же самое время не попытались использовать удаляемый объект.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший