Суть в том, что у каждого подписчика есть возможность отменить удаление. Обычно, когда вы используете слова «просмотр» и «подписка», это означает, что вы пассивны и просто реагируете на то, что видите.
Это не значит, что то, что вы пытаетесь сделать, невозможно, но это определенно сложно. Например, вы можете попробовать выполнить своего рода двухфазную фиксацию, при которой вы помечаете объект как удаленный, а затем ждете, пока все зрители подтвердят удаление, прежде чем действительно удалить объект. (По сути, это подход «спросить каждого подписчика, можно ли удалить элемент», который предлагает Chelmertz.) Однако это означает, что вам необходимо точно знать, сколько существует зрителей, и все зрители должны будут ответить, прежде чем вы сможете завершить удаление. У вас всегда есть три зрителя? Есть ли когда-нибудь только два? Что делать, если в одном из средств просмотра произошла ошибка - Если удаление не удалось или вы все равно хотите удалить объект?
Приятной особенностью системы, управляемой событиями, является то, что вам обычно не нужно беспокоиться о таких вопросах: вы просто вносите изменения в модель (в данном случае, удаляете объект) и запускаете событие изменения , Вам не нужно ничего знать о ваших зрителях.
Итак, если бы это была моя система, я бы попытался найти способ сделать изменения модели отменяемыми только за до их применения к модели, а не пытаться применить изменения к другим представлениям через модель, а затем пытается откатить эти изменения позже.