我有以下代码段
class Vehicle{
public String brand;
public double price;
public int productionYear;
public String toString(String formatType) {
switch(formatType) {
case "JSON": // JSON formatting here
return jsonFormattedString;
break;
case "XML": // XML formatting here
return xmlFormattedString;
break;
default: // default formatting
return defaultFormattedString;
}
}
我认为这种方法的问题是需要改变 行为发生变化的源代码(另一种格式类型); 以及我错过的其他SOLID违规行为。
如何更好地实施?
答案 0 :(得分:1)
我要做的是介绍另一门“出口”您的车辆的课程。
这样的事情。
public class VehicleExporter
{
public string ExportAsJson(Vehicle vehicle)
{
// Do the JSON thing
}
public string ExportAsXML(Vehicle vehicle)
{
// Do the XML thing
}
}
您设计的最大要点不是打破封闭式原则,而是车辆类别的责任。
当您的类正在执行toString()时,它实际上是在尝试做超出其职责范围的事情。
请让我知道是否可以进一步澄清。