работа с абстрактным классом Java
подскажите пожалуйста, как можно переписать этот код?
@Service
public class Manager {
@Autowired
private StorageOne one;
@Autowired
private StorageTwo two;
public void save() {
one.save();
two.save();
}
}
@Component
public class StorageOne {
public void save() {
......
}
}
@Component
public class StorageTwo {
public void save() {
......
}
}
я хочу в менаджере избавиться от
@Autowired
private StorageOne one;
@Autowired
private StorageTwo two;
public void save() {
one.save();
two.save();
}
и сделать, что то типо:
@Service
public class Manager {
@Autowired
private AbstrackStorage stor;
public void save() {
stor.save();
}
}
что бы при вызове вот этого абстрактного класса, отрабатывали переопределенные методы в стораджах, возможно ли это?)
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Можно сделать так:
public interface Storage {
void save();
}
@Component
public class StorageOne implements Storage {
public void save() {
......
}
}
@Component
public class StorageTwo implements Storage {
public void save() {
......
}
}
@Service
public class Manager {
@Autowired
private List<Storage> storages;
public void save() {
for (Storage storage : storages) {
storage.save();
}
}
}