2015-03-23 3 views
0

Я использую Dao шаблон в моем приложении, и я попытался использовать общий Dao так:реализация интерфейса в Java

interface IDao<I,T>{ 
    // CRUD operation 
} 

abstract class AbstractDaoImpl<I, T> implements IDao<I, T> { 
    // reusable method 
} 

interface UserDao extends IDao<Integer,User>{ 
    // special method for UserDao 
} 

class UserDaoImpl extends AbstractDaoImpl<Integer,User> implements UserDao { 
} 

Обратите внимание на UserDaoImpl он реализует UserDao (который простирается от IDao) себя, в то время как он расширяет AbstractDaoImpl, который также реализует IDao, что делает I, хотя существует дублирующая реализация для интерфейса.

Интересно, может ли это вызвать любую потенциальную проблему? Потому что я не уверен, что это приемлемая практика на Java.

+1

Это нормально, как вы это сделали. –

ответ

0

Нет, это не вызовет проблем, поскольку интерфейс не содержит никакой реализации (по крайней мере, до тех пор, пока вы не будете использовать методы по умолчанию Java 8).

Это не только приемлемая, но общепринятая практика в Java, которая учитывает общие интерфейсы и специализируется только там, где это необходимо.

Смежные вопросы