0

我想实现一种multiton类(可能也称为Manager Design Pattern),它根据用户配置加载(和管理)对象(multiton 中每个对象的键是配置记录的主键)。如果检测到配置更改,这些对象将被释放并重新创建(即重新加载)。

其他对象(托管对象外部)与这些“托管”对象交互/通信。

例如
,ManagerA 管理已配置的 ClassA 实例的实例。ObjectB 通过 ManagerA 检索 ClassA 的实例并开始与该实例交互。

问题是 ObjectB 和 ClassA 的托管实例之间的交互可能在另一个线程上,而不是 ManagerA 处理 ClassA 的实例并创建 ClassA 的新实例(用于新更改的配置)。即,托管实例可以在与托管对象交互时(或之前)进行处理。

我的问题是如何通过外部对象同步实例管理和与这些托管实例的交互?

4

1 回答 1

0

如果没有代码、伪代码或提供此类代码,这非常困难,但是......

如果客户端通过排队操作与托管协议对象进行交互,并且该操作队列与托管协议对象相比寿命更长,那么最好将该队列与托管协议分开并仅传递对队列的引用 -就像对客户的反对。

当某些东西入队时,让您的类似队列的对象检查一个正确配置的协议对象并使用它。我假设它在使用中(意味着字节在网络上飞过)它不能被更改/配置。完成该一项操作后,让类似队列的对象然后将协议对象签回给您的管理器。签入时,如果管理器检测到配置发生变化,它可以处理并重新创建协议对象,如果没有,那么它仍然坐在那里准备下一次使用。如果在检测到配置更改时,对象当前没有被签出,则该重新创建步骤可以立即发生。

客户端不受这些细节的影响,因为它从不直接访问协议对象。(尽管如果这是一个要求,那么您仍然可以将签入和签出概念应用于协议对象以确保它们是最新的,但是由于客户端可能忘记签入,因此执行起来更加困难并重新结帐)。

于 2012-09-27T20:55:22.427 回答