【发布时间】:2021-03-19 09:27:36
【问题描述】:
假设我生活在一个每个汽车品牌都有不同税率的国家,并且我有一个名为 Car 的基类:
public class Car{
public string CarType { get; set;}
public int Year {get; set;}
public abstract double calculateSalesTax();
}
是否可以添加一个抽象方法来计算销售税?或者这是否已经违反了 SOLID 原则? SOLID 中 S 的常用准则是“如果在描述类时必须使用 AND 一词,则很可能违反了原则”。在这里,计算销售税的方法的实现似乎需要 AND。此类设置汽车的属性并计算其销售税。
所以如果我实现派生类
public class Volkswagen : Car{
public override double calculateSalesTax(){
//Something to calculate a VWs tax
}
}
它已经打破了 SOLID 中的 S 吗?
【问题讨论】:
-
我不确定这是否是 SO 的主题。我认为Software Engineering 可能是一个更好的地方问这个问题。
标签: design-patterns solid-principles single-responsibility-principle