SOLID-违反开闭原则

时间:2018-09-10 17:23:09

标签: oop principles open-closed-principle

我有以下代码段

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违规行为。

如何更好地实施?

1 个答案:

答案 0 :(得分:1)

我要做的是介绍另一门“出口”您的车辆的课程。

这样的事情。

public class VehicleExporter
{
    public string ExportAsJson(Vehicle vehicle)
    {
        // Do the JSON thing
    }

    public string ExportAsXML(Vehicle vehicle)
    {
        // Do the XML thing
    }
}

您设计的最大要点不是打破封闭式原则,而是车辆类别的责任。

当您的类正在执行toString()时,它实际上是在尝试做超出其职责范围的事情。

请让我知道是否可以进一步澄清。