У меня проблема с LSP в моей программе. У меня есть абстрактный базовый класс и два разных типа продуктов: один Food , другой - электронное устройство. Мне нужно создать метод, который возвращает дату истечения/гарантию для этих продуктов. Проблема в том, что один имеет тип Date, а другой (гарантия) — тип Int... У вас есть идеи, как создать метод, удовлетворяющий обоим этим типам данных? без использования операторов switch/if, так как это нарушит OCP.
private static void printExpirationDateStatistics(List<Product> foodProducts) {
for (Product product : foodProducts) {
System.out.println(product.getExpirationDate());
}
}
Есть ли способ изменить эту функцию для обработки как продуктов питания, так и электроники, чтобы мне не приходилось создавать другой метод для каждого нового продукта?
Это методы из базового класса
public Date getExpirationDate() {
return expirationDate;
}
public void setExpirationDate(Date expirationDate) {
this.expirationDate = expirationDate;
}
public int getWarranty() {
return warranty;
}
public void setWarranty(int warranty) {
this.warranty = warranty;
}
Пробовал сделать один метод getValidity, но проблема в том, что для еды он должен возвращать Date, а для электроники должен возвращать Int. Любые идеи ?