Возможно, я вас не правильно понимаю.
Я не уверен, как вы получаете "невежественный" объект. Кажется, это противоречит основному принципу инкапсуляции. Единственный способ изменить состояние объекта должен быть через его интерфейс. Интерфейс несет ответственность за правильность обновлений состояния. Так что, к вашему примеру, вам не нужно проверять сумму в операции save()
(при условии, что здесь «сохранить» означает сохранение). Это должно быть обновлено как следствие, например, вызов addProduct()
(или что-то подобное - т.е. добавление товара к сумме обновления заказа).
Является ли объект постоянным или временным, не имеет значения - он должен всегда инкапсулировать обновление состояния через свой интерфейс.
Надеюсь, что это поможет - извинения, если я неправильно понял.