我的程序中的 LSP 有问题。我有一个抽象的基类和两种不同类型的产品,一种是食品,另一种是电子设备。我需要创建一个方法来返回这些产品的到期日期/保修。问题是一个是 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。有任何想法吗 ?