我有一个DataAccess类,它具有对接口的引用。该接口表示要使用的缓存策略。

我希望缓存策略具有类似initalize()方法的功能,该方法可以在启动时填充缓存。但是,该方法随后将需要DataAccess类来访问数据,最终我得到了交叉引用。

我也不想用setter方法“污染”接口,因为并非所有实现都需要它。另外最好不要在DataAccess类中使用setter,因为我希望所有字段都是最终的。

我可以创建一个调用dataaccess的附加层吗?

还有其他想法吗?

最佳答案

您应该用缓存查找类包装DataAccess类,该类仅在无法从其内部缓存中获取数据时才访问DataAccess类。就像您提到的那样,这将包括一个额外的层,但是根据实现它的方式,它对于应用程序代码可能是透明的(例如,通过使用AOP)。

10-02 12:45