Java接口继承和扩展

JAR*_*ARC 6 java oop object-oriented-analysis

想象一下,您正在研究成熟的产品,并且要求50%的产品需要新的搜索功能.现在假设你有一个与SomeDao建立的接口继承关系,你不想破坏...

public interface MoneyDao 
    extends SomeDao<MoneyEntity>
{
    //Operation common in much of the application
    List<MoneyEntity> findByCriteria(MoneyCriteria criteria);     
}
Run Code Online (Sandbox Code Playgroud)

...有没有办法公开方法'findByCriteria(..)'而不是在所有其他类似于MoneyDao的地方重复它,以更清洁的方式需要它?

请记住,我希望避免使用其中使用和修改SomeDao的新类型,如果可能的话.

问候,詹姆斯

Jon*_*ust 5

你能打破findByCriteria它自己的界面并扩展它MoneyDao吗?像这样的东西:

public interface MoneyDao 
    extends SomeDao<MoneyEntity>, MoneyFinder
{
}

public interface MoneyFinder
{
    //Operation common in much of the application
    List<MoneyEntity> findByCriteria(MoneyCriteria criteria);     
}
Run Code Online (Sandbox Code Playgroud)

现在你的类实现MoneyDao不需要改变,但你可以只传递findByCriteria使用MoneyFinder.