协助开放原则

时间:2014-11-30 21:48:54

标签: design-patterns open-closed-principle

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

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
} 

1 个答案:

答案 0 :(得分:0)

请注意&#34;打开关闭&#34;校长并不是一门精确的科学 - 它需要人们猜测人们可能想要延伸的东西&#34;。如果我创建一个绘制彩虹的应用程序 - 你会期望钩子改变颜色阴影吗?图片尺寸?或者你会指望我更进一步,允许钩子完全改变图像 - 比如大象?更进一步,允许动画......?

因此,我无法100%确定教师所期望的扩展。但是我想起来自ArrayList的继承并不是很好,你不觉得吗?它违反了其他原则,如封装,但违反了手头的主题 - 如果我想插入&#34;插入&#34;我自己的List,比如一个由文件备份的列表?或者在一台机器上复制的那个?

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

相关问题