我们正在使用商业分布式缓存框架。我们需要为企业内的其他商店提供使用此框架的能力,但我们需要保持对缓存名称的控制。框架将很乐意创建/获取具有所请求名称的缓存实例,但我们希望避免两个不同的应用程序团队无意中使用相同的缓存名称并最终引用相同的缓存。
理想情况下,我们有一个管理网站,用户可以在其中保留缓存名称,然后缓存创建过程将检查该网站后面的数据库,以确保请求的缓存名称是他们保留的名称。
如果没有用我们自己的包装器包装整个第三方API,有没有办法做到这一点?
我们可以继承CacheManager,覆盖创建方法,并指示它们使用我们的子类而不是原始的,但是什么会阻止他们只使用原始的?
答案 0 :(得分:1)
一种方法是更改API源代码,使类和方法不可见,并提供自己的接口。如果它是开源的,那应该不是问题。如果购买,供应商应该能够帮助您。
第二种方式可能是在运行时失败,如果直接尝试加载任何API类,而不是通过覆盖类。这可以通过创建一个自定义引导类加载器来完成,它将成为所有类加载请求的单一入口点。
答案 1 :(得分:0)
使用工厂方法创建自己的库,该方法创建正确命名的缓存并返回它。从那时起,该库的用户只是正常访问商业分布式缓存框架,而无需通过任何子类或其他mumbo jumbo。
你的图书馆: 访问服务器以检索缓存名称 - >创建缓存 - >手缓存回用户
然后,用户通过他们交回的缓存直接与第三方库进行交互。