Java-发送一个方法作为参数,并决定是否需要调用它

Java-发送一个方法作为参数,并决定是否需要调用它,java,design-patterns,Java,Design Patterns,我目前正在制作一个应用程序,并在其中实现缓存。问题是DAO是在另一个服务中实现的。 为了避免代码重复,我的想法是在我的服务中有一个通用缓存。然后,根据调用的方法验证相应的缓存,如果缓存不存在,则调用与作为参数传递的方法关联的DAO。有没有办法做到这一点? 注意:我在应用程序中使用的是java 1.6,我想您需要一个适配器模式。天真的认识可能是错误的 class AdapterA implements Adapter<A> { private A; @Override

我目前正在制作一个应用程序,并在其中实现缓存。问题是DAO是在另一个服务中实现的。 为了避免代码重复,我的想法是在我的服务中有一个通用缓存。然后,根据调用的方法验证相应的缓存,如果缓存不存在,则调用与作为参数传递的方法关联的DAO。有没有办法做到这一点?
注意:我在应用程序中使用的是java 1.6,我想您需要一个适配器模式。天真的认识可能是错误的

class AdapterA implements Adapter<A> {
   private A;
   @Override
   public void getValue() { return getA();}
} 
类适配器实现适配器{
私人A;
@凌驾
public void getValue(){return getA();}
} 
然后,当您得到A、B或C的实例时,将其包装在适当的适配器中。以后,不管引擎盖下的具体类型如何,都可以只调用getValue

另一种方法。如果有人说出模式是什么(可能是代理?),我将不胜感激:

类ProxyImpl实现代理{
@凌驾

public void doAction(在Java 1.8中,您可以使用
函数
接口。除此之外,您还需要使用自建的
接口
作为回调来执行此操作。什么是“与方法关联的DAO”意思是?如果方法在DAO类上,它本质上是传递DAO作为参数。如果方法在其他类上,它做什么?为什么你必须通过这个方法到达DAO?@MuratK。你能给我一个例子来更好地理解这个想法吗?@jingx例如,我有3种DAO类型:A、B和C。在A中,我有getA(),在B中我有getB(),在C中我有getC()。因此,基本上我想向我的通用缓存发送一个问题:“您有项A吗?”如果没有调用getA(),它会在与对象A关联的缓存中进行搜索来自dao A。因此getA/B/C必须具有完全相同的签名,因为否则您将无法以任何通用方式将它们传入缓存进行调用。那么为什么要在方法名称中硬编码结果类型A/B/C?为什么不使用方法getMyGenericType()的通用超级接口?然后您可以将此接口的引用传递到缓存。谢谢。我想这正是我所需要的。
class ProxyImpl implements Proxy {
 @Override
 public void doAction(<? extends DAO> dao) {
   if (dao instance of A) { ((A)dao).getA()
   } else if (dao instance of B) { ((B)dao).getB()