在Java中使用Management Beans时,其界面通过MBean Interface公开。但是如果有各种参数要通过MBean公开。使用不同版本的系统,可以在MBean中添加或减去许多新参数,然后管理这样的系统变得非常繁琐。
是否有可用于避免此类问题的设计模式?
答案 0 :(得分:1)
是的,使用接口。确保MBean的提供者以及使用者使用smae Java接口。
对于提供者部分,请查看spring如何从接口组装MBean。
在消费者方面,编写一个接口并将其转换为MBean访问操作的MBean客户端并不是很困难。
答案 1 :(得分:1)
如果您希望动态发生,您必须有一些逻辑规则来动态确定应该公开托管类的哪些字段\方法,哪些不应该公开。
现在,您可以实现Dynamic MBean(请参阅一个很好的解释性示例here)并使用反射来收集托管类的最新信息。然后应该根据前面提到的规则过滤反映的类信息(希望所有其他程序员都遵循它!我不会依赖它)。
好的,所以这不是一种设计模式。我认为真正的推荐模式是添加某些属性的程序员应该花一些时间来推断它是否值得暴露以及是否可以安全暴露。在删除属性时,应该考虑它是否不会破坏任何现有的客户端代码。