在设计一个图形绘制程序时,定义了一个抽象类 `Shape`,其中包含抽象方法 `draw()` 和具体方法 `setColor()`。现在,有两个类 `Rectangle` 和 `Triangle` 继承自 `Shape` 并实现了 `draw()` 方法。如果程序需要增加一个新图形类型 `Circle`,但 `Circle` 类的 `draw()` 方法实现逻辑需要用到一些额外的资源,这导致其实现方式与其他类有所不同。在不修改 `Shape` 类的情况下,下列哪种做法是最佳的?
答案解析
A选项错误,`setColor()` 方法的目的仅仅是设置颜色,不应该添加额外的资源加载和管理逻辑,这违反了单一职责原则。B选项错误,不应该为了一个类的特殊需求而引入新的抽象类,这增加了类的层次和复杂性。C选项正确,最合适的做法是在 `Circle` 类中添加额外的方法处理特殊需求,并且在 `draw()` 方法中调用这些方法,保证逻辑的内聚性,也避免了对其他类的影响。D选项错误,修改 `Shape` 类会影响到所有子类,并且使得 `Shape` 类不再抽象,违反了开闭原则。
正确答案:C