Должен ли я указывать конкретный тип для общих типов при расширении интерфейса другим интерфейсом?
Что я имею в виду есть, если у меня есть интерфейс:
public interface Repo<T>{
Collection<T> search(String params);
T get(String id);
}
, а затем целая куча конкретных репозиториев, таких как ClientRepo , CustomerRepo и т. д.… разумно ли указать тип T при расширении этого интерфейса, например:
public interface ClientRepo extends Repo<Client>{
}
public interface CustomerRepo extends Repo<Customer>{
}
где Клиент и Клиент - это всего лишь несколько классов.
Была ли у кого-нибудь подобная проблема? То есть я мог бы сделать:
public interface ClientRepo<T> extends Repo<T>{
}
Приложение : Возможно, мне следует более четко заявить о своем намерении иметь конкретные репозитории (например, ClientRepo). Существует еще один интерфейс, называемый RepoFactory , который возвращает соответствующее Repo клиенту, например:
public interface RepoFactory{
ClientRepo createClientRepo();
CustomerRepo createCustomerRepo();
}
Эта фабрика реализуется разработчиками , которые, в свою очередь, предоставляют соответствующие реализации конкретных Repos.
Фактически из вышеизложенного можно сказать, что интерфейс Repo
Достаточно запутанно, надеюсь !!! Извините: (