← Каталог
Объектно-ориентированное программирование в Java — Когда использовать интерфейс, а когда абстрактный класс?
Фрагмент из «Объектно-ориентированное программирование в Java»: Когда использовать интерфейс, а когда абстрактный класс?.
public interface Repository<T, ID> {
T findById(ID id);
List<T> findAll();
void save(T entity);
void delete(T entity);
}
public abstract class AbstractInMemoryRepository<T, ID> implements Repository<T, ID> {
protected final Map<ID, T> storage = new HashMap<>();
@Override
public T findById(ID id) {
return storage.get(id);
}
@Override
public List<T> findAll() {
return new ArrayList<>(storage.values());
}
// save и delete остаются абстрактными — логика зависит от структуры ID и equals/hashCode
} public interface Repository<T, ID> {
T findById(ID id);
List<T> findAll();
void save(T entity);
void delete(T entity);
}
public abstract class AbstractInMemoryRepository<T, ID> implements Repository<T, ID> {
protected final Map<ID, T> storage = new HashMap<>();
@Override
public T findById(ID id) {
return storage.get(id);
}
@Override
public List<T> findAll() {
return new ArrayList<>(storage.values());
}
// save и delete остаются абстрактными — логика зависит от структуры ID и equals/hashCode
}