0

我们正在使用商业分布式缓存框架。我们需要为企业内的其他商店提供使用此框架的能力,但我们需要保持对缓存名称的控制。该框架将愉快地创建/获取请求的任何名称的缓存实例,但我们希望避免两个不同的应用程序团队无意中使用相同的缓存名称并最终引用相同的缓存。

理想情况下,我们应该有一个管理网站,用户可以在其中保留缓存名称,然后缓存创建过程将检查该站点后面的数据库,以确保所请求的缓存名称是他们保留的名称。

如果不使用我们自己的包装器包装整个 3rd 方 API,有没有办法做到这一点?

我们可以将 CacheManager 子类化,重写创建方法,并指示他们使用我们的子类而不是原来的,但是什么会阻止他们只使用原来的?

4

2 回答 2

1

一种方法是更改​​ API 源代码以使类和方法不可见并提供您自己的接口。如果它是开源的,那应该不是问题。如果购买,供应商应该能够帮助您。

第二种方法可能是在运行时失败,如果直接尝试加载任何 API 类,而不是通过覆盖类。这可以通过创建自定义引导类加载器来完成,它将成为所有类加载请求的单一入口点。

于 2013-10-09T03:57:27.860 回答
0

使用工厂方法创建您自己的库,该方法创建正确命名的缓存并返回它。从那时起,该库的用户就可以正常访问商业分布式缓存框架,而无需通过任何子类或其他类似的笨蛋。

您的库:访问服务器以检索缓存名称 -> 创建缓存 -> 将缓存返回给用户

然后,用户通过返回的缓存直接与第三方库进行交互。

于 2013-10-09T02:26:55.087 回答