Вы можете добавить еще один слой косвенности и заставить объект Resource
выступать в качестве прокси для объекта RealResource
.При удалении / изменении экземпляра RealResource
необходимо обновить только объект Resource
.Клиенты всегда имеют действительный указатель на прокси Resource
, который может определить, находится он в рабочем состоянии или нет.
+----------+ +-----------+ +--------------+ +------+
| ClientA |< >---+----| Resource |<o>------| RealResource |<|----| ResA |
+----------+ | +-----------+ +--------------+ +------+
| | isValid() | | use() |
+----------+ | | use() | +--------------+
| ClientB |< >---' +-----------+
+----------+