0

我被分配了一个家庭作业项目来弄清楚为什么代码片段不符合开闭原则,但我很难弄清楚。我在这里只是要求有人让我走上正确的道路,而不是为我完成作业。如果有人可以通过告诉我我在这段代码中寻找什么来帮助我,那将不胜感激。

public class MyQueue<T> extends ArrayList<T> implements Queue<T> {
    int front = 0;
    int back = 0;
    void put(T e) {
        add(back++, e);
    }
    T get() {
        return get(front++);
    }
    // ... other methods from Queue interface
} 
4

1 回答 1

0

请注意,“开放封闭”原则并不是精确的科学——它需要人类猜测“人们可能想要扩展什么”。如果我创建了一个绘制彩虹的应用程序 - 你会期望钩子改变颜色阴影吗?图片尺寸?或者你会期望我走得更远,让钩子完全改变形象——对大象说?更进一步,允许动画......?

所以我不能 100% 确定你的导师期望什么扩展。但是突然想到从 ArrayList 继承并不是很好,你不觉得吗?它违反了其他原则,例如封装,但对于手头的主题 - 如果我想“插入”我自己的列表怎么办,比如说一个由文件备份的列表?还是在多台机器上复制的?

您可以发挥您的想象力来考虑其他可能的扩展。但这实际上取决于您课程的水平和重点。例如,您是否希望能够编写一个足够灵活的队列来支持优先级队列?

于 2014-12-02T09:07:05.000 回答