我正在寻找类似于Proxy 模式或Dynamic Proxy Classes的东西,只是我不想在真实对象上调用方法调用之前拦截它们,而是我想拦截正在更改的属性. 我希望代理能够表示具有不同属性集的多个对象。Action Script 3 中的 Proxy 类之类的就可以了。
这是我一般想要实现的目标:
我有一个线程运行一个对象,该对象管理由程序中的其他线程移交的值列表(数字、字符串、对象),因此该类可以负责在磁盘上创建定期持久快照以进行检查点应用程序。这个持久化对象管理一个“脏”标志,表示自上一个检查点以来值列表是否已更改,并且在忙于将其写入磁盘时需要锁定该列表。
持久化器和其他组件通过通用名称识别特定项目,因此当从崩溃中恢复时,其他组件可以首先检查持久化器是否保存了最新的副本,并从中断的地方继续工作。
在正常操作期间,为了使用他们移交给持久化器的对象,我希望他们接收对代理对象的引用,该引用看起来好像是原始对象,但是每当他们更改其上的某些值时,持久化器通知并相应地采取行动,例如在实际设置实际值之前将项目或列表标记为脏。
编辑:或者,Java中是否有通用设置器(如PHP 5),即如果属性不存在则调用的方法?或者是否有一种对象可以在运行时添加属性?